Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Kante in 3D-Skizze übernehmen; Oberfläche erzeugen und schneiden

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: Nutzen der aktuellen Hardware im CAD – Grafikperformance Neuigkeiten in SOLIDWORKS 2021
Autor Thema:   API: Kante in 3D-Skizze übernehmen; Oberfläche erzeugen und schneiden (169 mal gelesen)
NeulingD21
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 03.02.2021

SolidWorks 2018; API-Programmierung; Kante übernehmen

erstellt am: 17. Feb. 2021 11:08    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 euch allen,

ich brauche wieder einmal eure Hilfe. Es geht wieder um ein Makro in SolidWorks.

Ich will in einer Baugruppe ein Teil zum Bearbeiten öffnen, dann eine 3D-Skizze erstellen und die Kante eines anderen Bauteiles mit dem Befehl "Element übernehmen" in das Einzelteil übernehmen. Ich möchte dann die Bauteile etwas gegeneinander verschieben (dieses Makro inkl. Schleife gibt es schon) und dann den Prozess wiederholen. Dabei muss die gleiche Kante, nun logischerweise an einer anderen Position als neue 3D-Skizze in das Einzelteil übernommen werden.

Folgendes weiß ich bereits:

Das Einzelteil zum Bearbeiten öffnen geht mittels

Code:
boolstatus = part.Extension.SelectByID2("Name Einzelteil@Name Baugruppe", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
part.EditPart

Eine 3D-Skizze kann ich dann mit

Code:
part.SketchManager.Insert3DSketch True

anlegen.

Mittels

Code:
boolstatus = part.SketchManager.SketchUseEdge3(False, False)
part.SketchManager.InsertSketch True

sollte ich dann eine ausgewählte Kante in die 3D-Skizze übernehmen können.

Durch

Code:
part.EditAssembly

komme ich aus der Bearbeitung des Einzelteiles wieder heraus.

Nun kommt aber der "schwierige" Teil. Wie kann ich eine Kante auswählen und woher bekomme ich den Namen/Bezeichnung dieser Kante?

Ich würde dies dann in meine bestehende Schleife integrieren. Damit hätte ich den ersten Teil meiner Aufgabe erledigt. Das würde mir schon wirklich sehr weiterhelfen. (90% der Arbeit) 

Ich würde es dann trotzdem noch gerne erweitern, sodass eine Oberfläche aus allen 3D-Skizzen mit "Begrenzungsoberfläche" erzeugen und dann die Funktion "Schnitt mit Oberfläche" ausgeführt wird.

Die "Krönung" wäre es im Anschluss noch, diesen neu erzeugten Oberflächenschnitt in eine Kreismuster mit definierter Musteranzahl zu packen.

Ich fasse nochmals kurz zusammen:

    1.) Wie kann ich eine Kante auswählen und woher bekomme ich den Namen/Bezeichnung dieser Kante?
    2.) Wie kann ich alle 3D-Skizzen (Anzahl variert, am besten mittels Schleife) in einem Einzelteil in die "Begrenzungsoberfläche" bekommen?
    3.) Wie kann ich die Funktion "Schnitt mit Oberfläche" und dieser neu erzeugten Oberfläche durchführen wenn ich den Namen noch nicht kenn?
    4.) Wie kann ich den erzeugten Oberflächenschnitt in ein Kreismuster bekommen und dabei die Anzahl der Muster einstellen?

Vielen Dank euch schon vorab.

Liebe Grüße

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

NeulingD21
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 03.02.2021

SolidWorks 2018; API-Programmierung; Kante übernehmen

erstellt am: 25. Feb. 2021 08:19    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

Guten Morgen,

es würde mir schon sehr weiterhelfen wenn mir jemand sagen könnte wie ich per Makro eine Kante eindeutig (immer die gleiche Kante egal wo sich diese im Raum befindet) auswählen kann. Ich habe mir jetzt eine Lösung gebaut, bei der das Makro kurz (3s) unterbrochen wird um die Kante händisch auszuwählen. Wenn ich dies nicht in den 3s hinbekommen habe, dann kann ich in der MessageBox einfach auf "Nein" oder "Abbrechen" klicken. Dann habe ich nochmals die 3s. Das funktioniert soweit auch sehr zuverlässig. Es wäre schön wenn ich die Auswähl der Kante nun auch noch in den Code einbauen könnte, dann wäre alles deutlich schneller.

Unten findet Ihr meinen Code einmal mit der Pause.

Code-Um Kante als 3D-Skizze zu übernehmen:

Code:

Sub Oberflaeche()

Dim strBezeichnung1 As String
Dim strBezeichnung2 As String

strBezeichnung1 = "Test1-1@Testbaugruppe"
strBezeichnung2 = "Test2-1@Testbaugruppe"

Set swApp = Application.SldWorks
Set part = swApp.ActiveDoc

swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swExternalReferencesDisable, True    'Option "Keine externen Referenzen" aktivieren

boolstatus = part.Extension.SelectByID2(Bezeichnung1, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
part.EditPart
part.SketchManager.Insert3DSketch True

    Do
        Call Pause(3)
    Loop Until MsgBox("Kante ausgewählt?", vbYesNoCancel) = vbYes

boolstatus = part.SketchManager.SketchUseEdge3(False, False)
part.SketchManager.InsertSketch True
part.EditAssembly

End Sub


Code für Pause um Kante händisch auszuwählen:

Code:

Public Sub Pause(Seconds As Single) 'Quelle https://social.msdn.microsoft.com/Forums/vstudio/en-US/662544a6-7c07-496d-87dc-5c0a447ce685/vba-applicationwait-gt-runtime-error-438?forum=project2010custprog
    Dim TimeEnd As Single
    TimeEnd = Timer + Seconds
    While Timer < TimeEnd
        DoEvents
    Wend
End Sub

Vielleicht kann mir hier jemand zumindest einmal einen Tipp geben.

Gruß

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

nahe
Ehrenmitglied



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

Beiträge: 1592
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2018 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 25. Feb. 2021 13:31    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 NeulingD21 10 Unities + Antwort hilfreich

Hallo,

das Auswählen von SWX Elementen aus einem laufenden Makro ist, meines Wissens,
aufwendig, kompliziert und ich würde die Finger davon lassen.
(es gibt keine einfache Select-Funktion die ein laufendes Makro anhält und so lange wartet bis ein Objekt gewählt wurde)

Meiner Meinung nach, hast Du zwei einfache Möglichkeiten
1. Du wählst die Kante, startest danach das Makro und holst die Kante mit GetSelectedObject6
2. Du gibst der Kante einen eindeutigen Namen und wählst sie mit SelectByID2 unter Angabe des Namens


------------------
Grüße
Heinz

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

NeulingD21
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 03.02.2021

SolidWorks 2018; API-Programmierung; Kante übernehmen

erstellt am: 25. Feb. 2021 13: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

Hallo,

mit meinem Makro kann ich das Makro anhalten und "händisch" die Kante wählen. Wenn ich die Kante direkt ansprechen kann brauch ich die Pause natürlich nicht mehr.

Wie kann ich der Kante den einen eindeutigen Namen geben?

Grüße

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

nahe
Ehrenmitglied



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

Beiträge: 1592
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2018 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 25. Feb. 2021 14:22    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 NeulingD21 10 Unities + Antwort hilfreich

Hallo,

Kante wählen rechts-klick "Kanteneigenschaften"

------------------
Grüße
Heinz

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)2021 CAD.de | Impressum | Datenschutz