Salome HOME
neutral fiber macro
[modules/shaper.git] / src / PythonAddons / macros / compoundVertices / feature.py
old mode 100644 (file)
new mode 100755 (executable)
index a8ffe0e..ea26d89
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Copyright (C) 2016-2021  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 """compound of vertices Feature
 Author: Nathalie Gore
 """
+import os
 
 from salome.shaper import model
-from salome.shaper import geom
+
 import ModelAPI
 
 class compoundVertices(model.Feature):
@@ -31,6 +33,10 @@ class compoundVertices(model.Feature):
 
 # Feature initializations
 
+    lfeatures = list()
+    folder = None
+    separator = " "
+
     def __init__(self):
         """x.__init__(...) initializes x; see x.__class__.__doc__ for signature"""
         model.Feature.__init__(self)
@@ -42,7 +48,7 @@ class compoundVertices(model.Feature):
 
     @staticmethod
     def FILE_ID():
-        """Returns ID of the file select parameter."""
+        """Returns ID of the file."""
         return "file_path"
 
     @staticmethod
@@ -63,10 +69,6 @@ class compoundVertices(model.Feature):
         self.data().addAttribute(self.FILE_ID(), ModelAPI.ModelAPI_AttributeString_typeId())
         self.data().addAttribute(self.SEPARATOR_ID(), ModelAPI.ModelAPI_AttributeString_typeId())
 
-        self.lfeatures = []
-        self.folder = None
-        self.separator = " "
-
 # Execution of the Import
 
     def execute(self):
@@ -78,39 +80,43 @@ class compoundVertices(model.Feature):
             self.separator = aseparator
 
         filepath = apath.value()
+        #print("filepath : '{}'".format(filepath))
         if filepath != "" :
-            part = model.activeDocument()
-            if self.lfeatures :
-                for feature in self.lfeatures:
-                   part.removeFeature(feature.feature())
-                self.lfeatures = []
-                model.removeFolder(self.folder)
-
-            from os.path import basename
-            filename = basename(filepath)
-            nameRes = "Points_" + filename
-
-            # Creating the construction points in the current document
-            lVertices = []
-
-            with open(filepath) as file:
-                for line in file:
-                    coord = line.split(self.separator)
-                    if len(coord) != 3:
-                        return
-                    x = float(coord[0]); y = float(coord[1]); z = float(coord[2]);
-                    point = model.addPoint(part, x,y,z); point.execute(True); self.lfeatures.append(point)
-                    #vertex = model.addVertex(part, [point.result()]); vertex.execute(True); self.lfeatures.append(vertex)
-                    lVertices.append(point.result())
-                file.close()
-                compound = model.addCompound(part, lVertices)
-                compound.execute(True); self.lfeatures.append(compound)
-                compound.result().setName(nameRes)
-                self.folder = model.addFolder(part, self.lfeatures[0], compound)
-                self.folder.setName(nameRes)
-                return
-
-            setError("The file does not exist")
+            if os.path.isfile(filepath):
+                part = model.activeDocument()
+                if self.lfeatures :
+                    for feature in self.lfeatures:
+                        part.removeFeature(feature.feature())
+                    self.lfeatures = list()
+                    model.removeFolder(self.folder)
+
+                filename = os.path.basename(filepath)
+                nameRes = "Points_" + filename
+
+                # Creating the construction points in the current document
+                lVertices = list()
+
+                with open(filepath) as fic:
+                    for line in fic:
+                        coord = line.split(self.separator)
+                        if len(coord) != 3:
+                            return
+                        point = model.addPoint(part, float(coord[0]),float(coord[1]),float(coord[2]))
+                        point.execute(True)
+                        self.lfeatures.append(point)
+                        #vertex = model.addVertex(part, [point.result()]); vertex.execute(True); self.lfeatures.append(vertex)
+                        lVertices.append(point.result())
+                    fic.close()
+                    compound = model.addCompound(part, lVertices)
+                    compound.execute(True)
+                    self.lfeatures.append(compound)
+                    compound.result().setName(nameRes)
+                    self.folder = model.addFolder(part, self.lfeatures[0], compound)
+                    self.folder.setName(nameRes)
+            else:
+                self.setError("The file '{}' does not exist".format(filepath))
+
+        return
 
     def isMacro(self):
         """Override Feature.initAttributes().