Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Punkte in 3D-Skizze automatisch verbinden

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
TeamTec Hausmesse
Autor Thema:  Punkte in 3D-Skizze automatisch verbinden (2258 mal gelesen)
Maxi-Air
Mitglied



Sehen Sie sich das Profil von Maxi-Air an!   Senden Sie eine Private Message an Maxi-Air  Schreiben Sie einen Gästebucheintrag für Maxi-Air

Beiträge: 10
Registriert: 07.08.2018

SolidWorks 2016
Windows 7

erstellt am: 21. Aug. 2018 17:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich bin neu im Forum, habe aber in den letzten Monaten schon viel im Forum gelesen und gelernt. Im Studium (Flugzeugbau) hab ich CATIA gelernt, aber ich versuche momentan auch mit SolidWorks klar zu kommen.

Ich hatte in den letzten Wochen viele Fragen und immer wieder schon was formuliert, um es hier abzusenden, aber doch noch irgendwie eine Lösung im Forum oder ein Work-around gefunden. Jetzt komm ich aber an einer Stelle nicht weiter, weil meine Programmierkenntnisse praktisch nicht existent sind.

Das tolle Makro zum Umwandeln von Punkten in eine 3D-Skizze vom Herrn Berlitz hab ich (natürlich dank dem Forum) schon gefunden. Das ist soweit schon sehr hilfreich, aber da die Punkte ja keine Nummerierung haben, wüsste ich jetzt nicht, in welcher Reihenfolge ich die Punkte verbinden muss. Also müsste ich die Punkte immer ausmessen und mit meiner ursprünglichen Liste vergleichen. Da ich sie aber sowieso nur in der Reihenfolge mit geraden Linien verbinden möchte, wie ich sie einlese und da es sich um hunderte Punkte handelt, stellt sich mir die Frage, ob es da da eine Möglichkeit gibt, das Makro so zu erweitern, dass es automatisch die eingelesenen Punkte in der Reihenfolge durch Geraden verbindet?


____
Das tolle Makro von dem ich Rede:
http://solidworks.cad.de/mm_24.htm
____

Vielen Dank schon einmal und viele Grüße,
Max

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ralf Tide
Moderator
-




Sehen Sie sich das Profil von Ralf Tide an!   Senden Sie eine Private Message an Ralf Tide  Schreiben Sie einen Gästebucheintrag für Ralf Tide

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 21. Aug. 2018 19:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Maxi-Air 10 Unities + Antwort hilfreich

Hallo Max,

willkommen im Forum.

Zitat:
Original erstellt von Maxi-Air:
...ob es da da eine Möglichkeit gibt, das Makro so zu erweitern, dass es automatisch die eingelesenen Punkte in der Reihenfolge durch Geraden verbindet?
Ja, das geht. Das von Dir genannte Makro enthält die Zeile
Code:
Set point = ModelDoc2.CreatePoint2(x, y, z)
Um nun eine Linie statt eines Punktes zu erstellen musst Du z.B.
Code:
Set skSegment = Part.SketchManager.CreateLine(x1, y1, z1, x2, y2, z2)
verwenden (mit Makro-Rekorder aufgezeichnet). Die API-Hilfe hierzu: http://help.solidworks.com/2018/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModeler~CreateLine.html

Wie Du leicht siehst, werden hier schon gleich Anfangs und Endpunkt durch (zweimal) drei Werte x, y und z bestimmt. Das musst Du dann in Deiner Schleife berücksichtigen (das Makro von Stefan liest ja nur einmal drei Werte, setzt den Punkt und liest die nächsten drei für den nächsten Punkt...).

HTH
Ralf

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Maxi-Air
Mitglied



Sehen Sie sich das Profil von Maxi-Air an!   Senden Sie eine Private Message an Maxi-Air  Schreiben Sie einen Gästebucheintrag für Maxi-Air

Beiträge: 10
Registriert: 07.08.2018

SolidWorks 2016
Windows 7

erstellt am: 21. Aug. 2018 19:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Ralf Tide:
Hallo Max,

willkommen im Forum.Ja, das geht. Das von Dir genannte Makro enthält die Zeile

Code:
Set point = ModelDoc2.CreatePoint2(x, y, z)
Um nun eine Linie statt eines Punktes zu erstellen musst Du z.B.
Code:
Set skSegment = Part.SketchManager.CreateLine(x1, y1, z1, x2, y2, z2)
verwenden (mit Makro-Rekorder aufgezeichnet). Die API-Hilfe hierzu: http://help.solidworks.com/2018/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModeler~CreateLine.html

Wie Du leicht siehst, werden hier schon gleich Anfangs und Endpunkt durch (zweimal) drei Werte x, y und z bestimmt. Das musst Du dann in Deiner Schleife berücksichtigen (das Makro von Stefan liest ja nur einmal drei Werte, setzt den Punkt und liest die nächsten drei für den nächsten Punkt...).

HTH
Ralf


Hallo Ralf,

erstmal vielen Dank!

Jetzt muss ich aber nochmal genauer fragen,

bei deiner vorgeschlagenen Variante muss ich ja auch vorher den Quellcode so abändern, dass er alle 6 Variablen "erkennt", oder sehe ich das Falsch?

Grüße, Max


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ralf Tide
Moderator
-




Sehen Sie sich das Profil von Ralf Tide an!   Senden Sie eine Private Message an Ralf Tide  Schreiben Sie einen Gästebucheintrag für Ralf Tide

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 21. Aug. 2018 22:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Maxi-Air 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Maxi-Air:
...den Quellcode so abändern, dass er alle 6 Variablen "erkennt", oder sehe ich das Falsch?
Genau so ist es. Z.B. vor der Schleife
Code:
While Not (EOF(1))

        Line Input #1, zeile
        anzahl = anzahl + 1
        ...
Wend


schon die erste Zeile lesen und x1, y1 und z1 zuweisen. In der Schleife nach dem lesen der zweiten Zeile die Werte in x2, y2 und z2 schreiben. Wenn Du die Linie erzeugt ist, den Inhalt von x2 in x1 (y2->y1, z2->z1) schreiben und die Werte der nächste Zeile in x2, y2 und z2 schreiben... wiederholen bis EOF erreicht ist...

HTH
Ralf

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HenryV
Mitglied
Konstrukteur, Engineering


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 22. Aug. 2018 10:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Maxi-Air 10 Unities + Antwort hilfreich


Gen3DLineCloud.zip

 
Hallo Max

Ich hab das schon mal gemacht, siehe Anhang.
Alternativ kannst du ja mal den Befehl Erstellen von Kurven durch XYZ-Punkte versuchen.

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Maxi-Air
Mitglied



Sehen Sie sich das Profil von Maxi-Air an!   Senden Sie eine Private Message an Maxi-Air  Schreiben Sie einen Gästebucheintrag für Maxi-Air

Beiträge: 10
Registriert: 07.08.2018

SolidWorks 2016
Windows 7

erstellt am: 22. Aug. 2018 15:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von HenryV:
Hallo Max

Ich hab das schon mal gemacht, siehe Anhang.
Alternativ kannst du ja mal den Befehl Erstellen von Kurven durch XYZ-Punkte versuchen.

Gruss Andreas


Danke Ralf und Andreas, ich schau mir das mal an.

Die Funktion "Kurve durch XYZ-Punkte" ist nicht das, was ich brauche, die erzeugt nämlich irgendwelche nicht steuerbaren Bögen/Kurven, ich brauche nur gerade Linien zum Verbinden. Was die Funktion da macht sind auch keine Bézierkurven, und nicht andersweitig steuerbar.

Vielen Dank nochmal. Ich melde mich die Tage nochmal.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 23. Aug. 2018 08:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Maxi-Air 10 Unities + Antwort hilfreich


31599_mm24-linien-statt-punkte.png

 
Hallo Max,

die Erweiterung, die du machen möchtest, ist eigentlich recht einfach umzusetzen: du merkst dir jeweils den vorigen Punkt undziehst dann ab der zweiten Zeile der eingelesenen Daten jeweils zwischen dem aktuellen und dem vorherigen Punkt eine Linie. Fertig 

Im Code also:
* zusätzliche Variablen für den zweiten Punkt deklarieren

Code:
    Dim PreX, PreY, PreZ As Double

* auskommentieren des Punkt erzeugen (wenn du die nicht auch noch haben willst
* Linie zeichnen, wenn mindestens in der zweiten Zeile des Inputs
Code:
       
' Erweiterung: Linien zwischen den Punkten statt Punkte
' wenn wir mindestens zwei Punkte eingelesen haben
If anzahl > 1 Then
  ' dann steht in PreX, PreY, PreZ die Koordinaten des vorigen Punktes,
  ' also Linie zwischen dem aktuellen und dem vorherigen Punkt ziehen
  Set point = ModelDoc2.CreateLine2(x, y, z, PreX, PreY, PreZ)
End If


* Koordinaten merken für den nächsten Durchlauf
Code:

' und die aktuellen Koordinaten für den nächsten durchlauf merken
PreX = x
PreY = y
PreZ = z

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Maxi-Air
Mitglied



Sehen Sie sich das Profil von Maxi-Air an!   Senden Sie eine Private Message an Maxi-Air  Schreiben Sie einen Gästebucheintrag für Maxi-Air

Beiträge: 10
Registriert: 07.08.2018

SolidWorks 2016
Windows 7

erstellt am: 29. Aug. 2018 16:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von StefanBerlitz:
Hallo Max,

...

Ciao,
Stefan


Entschuldige bitte die späte Antwort.

Vielen Dank Stefan, das funktioniert jetzt so einwandfrei. Als totaler Anfänger in VBA hab ich so etwas gebraucht, aber wenn man rückblickend schaut, wär es doch eigentlich ganz einfach gewesen mit deinem Code!

Vielen Dank nochmal!

Grüße, Max

[Diese Nachricht wurde von Maxi-Air am 29. Aug. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz