Macro WireXYZ/de

LinienzugXYZ

Beschreibung
Dieses Makro erstellt einen Linienzug (oder Punkte) mit den aus einer Datei extrahierten Koordinaten. Die Koordinaten X Y Z sind durch ein Leerzeichen getrennt.

(Befehlszeile, füge dieses vollständige Makro in die Python-Konsole ein).

Versionsmakro : 0.3
Datum der letzten Änderung : 2020-10-16
FreeCAD version : Alle
Herunterladen : Werkzeugleisten-Symbol
Autor: Mario52

Autor
Mario52
Herunterladen
Werkzeugleisten-Symbol
Links
Macro-Version
0.3
Datum der letzten Änderung
2020-10-16
FreeCAD-Version(s)
Alle
Standardverknüpfung
None
Siehe auch
Macro_Dxf_To_Shape

Beschreibung

Dieses Makro erstellt einen Linienzug (oder Punkte) mit den aus einer Datei extrahierten Koordinaten. Die Koordinaten X Y Z sind durch ein Leerzeichen getrennt.

Anwendung

Die Datei muss drei Koordinaten X Y Z im ASCII-Format ohne Kopfzeile enthalten.

Skript

Werkzeugleistensymbol


Macro_WireXYZ.FCMacro

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
# created a wire with coordinate x y z separated (in the file without coma)
__title__= "Macro_WireXYZ"
__author__= "Mario52"
__date__= "2020/10/16"
__version__= "00.03"
##
#EX:
#0 0 0
#10 10 10
#15 20 25
#. . . .

from FreeCAD import Base
import Draft, Part

## path for Windows    : C:\yourPath\cloud.asc (create one error in Python (cause, the "\" is a command syntax in Python)
## replace "\" by "/"  result : C:/yourPath/cloud.asc 
## or replace the "\" by "\\" result : C:\\yourPath\\cloud.asc 

fichier = "C:\\yourPath\\cloud.asc"                          # path and name of file.txt

file = open(fichier, "r")                                  # open the file read
wire = []
X=Y=Z = 0.0

for ligne in file:
    coordinates = ligne.split()
    try:                                                        # for format PCD ignore the header
        X,Y,Z = coordinates                                     # separate the coordinates
#        Draft.makePoint(float(X),float(Y),float(Z))            # create points (uncomment for use)
        print(X," ",Y," ",Z)
        wire.append(FreeCAD.Vector(float(X),float(Y),float(Z))) # append the coordinates
    except Exception:
        None
file.close()
Draft.makeWire(wire,closed=False,face=False,support=None)   # create the wire open
#Draft.makeWire(wire,closed=True,face=False,support=None)   # create the wire closed (uncomment for use)

#Draft.makeBSpline(wire,closed=False,face=False,support=None)# create the BSpline open (uncomment for use)
#Draft.makeBSpline(wire,closed=True,face=False,support=None)# create the BSpline open (uncomment for use)

App.ActiveDocument.recompute()


Beispiel

0 240.42686 0

20 243.83054 0

40 247.33677 0

60 250.94702 0

80 254.66283 0

100 258.48575 0

...

Ändere den Pfad und den Namen der Datei, speichere und lade das Makro und führe es aus.

fichier = "C:\yourPath\cloud.asc"                          # path and name of file.txt

## path for Windows    : C:\yourPath\cloud.asc (create one error in Python (cause, the "\" is a command syntax in Python)
## replace "\" by "/"  result : C:/yourPath/cloud.asc 
## or replace the "\" by "\\" result : C:\\yourPath\\cloud.asc

Wenn ein geschlossener Linienzug erwünscht ist, ändere diese Zeile (closed=False):

Draft.makeWire(wire,closed=False,face=False,support=None)   # create the wire open


und ersetze es mit (closed=True):

Draft.makeWire(wire,closed=True,face=False,support=None)   # create the wire closed

Gleiches gilt für die Fläche, False oder True (face=True).

Verweise

Diskussion im FreeCAD-Forum: How do I transform a point cloud to a line?

Version

00.03 16/10/2020 : Umgewandelt für Python 3, Informationen zur Pfaddatei hinzugefügt, "Windows": Rückstrich "\" mit "\\" oder "/" ersetzt, siehe How do I transform a point cloud to a line?

00.02 02/07/2019 :

00.01 21/02/2015