| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| E-Book: Reibungslose Zusammenarbeit im Konstruktionsprozess |
Autor
|
Thema: per vba bohrungen in zeichnung auswählen (1549 mal gelesen)
|
LeonardStark Mitglied
Beiträge: 100 Registriert: 14.08.2018
|
erstellt am: 04. Mrz. 2020 14:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich bastle gerade an einem automatischen Bemaßungstool für eine angewählte Ansicht einer Zeichnung. Soweit funktioniert das ganz gut, ich lasse den Algorithmus ein Auswahlfenster über den Ansichtsbereich aufziehen. Allerdings bekomme ich so keine Bohrungen ausgewählt. weiß jemand wie ich das machen kann? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 04. Mrz. 2020 20:38 <-- editieren / zitieren --> Unities abgeben: Nur für LeonardStark
Hallo, ich würde mir als Einstieg mal das Beispiel Get All Edges in Visible Component in Drawing View Example aus der Onlinehilfe ansehen Ev. gibt es aber auch einen viel einfacheren Weg
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LeonardStark Mitglied
Beiträge: 100 Registriert: 14.08.2018
|
erstellt am: 05. Mrz. 2020 08:43 <-- editieren / zitieren --> Unities abgeben:
prinzipiell funktioniert das Beispiel. Danke. Ich kann damit die fehlenden Bohrungen auswählen. Trotz noch aktivierter Bemaßungsauswahl werden die Bohrungen aber nicht dem Ordinatenmaß hinzugefügt. Klicke ich per hand auf den Kreis, funktioniert es. Gibts dazu vielleicht noch ideen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 05. Mrz. 2020 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für LeonardStark
|
LeonardStark Mitglied
Beiträge: 100 Registriert: 14.08.2018
|
erstellt am: 05. Mrz. 2020 10:53 <-- editieren / zitieren --> Unities abgeben:
Ich hab mal den Code angehängt. Grundsätzlich zusammengefasst: ich wähle über ein sketchboxselect alle Vertices der gewählten Ansicht aus und hänge daran ein ordinatenmaß. da Kreise darin allerdings nicht erfasst werden fehlt mir noch die Bemaßung der Bohrungen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 06. Mrz. 2020 06:07 <-- editieren / zitieren --> Unities abgeben: Nur für LeonardStark
Guten Morgen, ein nettes Makro hast Du da anbei ein Ausschnitt aus dem von mir genannten Beispiel, das ich noch etwas erweitert habe, damit nur Kreise ausgewertet werden. Ich hab mir jetzt nicht angesehen, welche Daten Du davon für die Bemaßung brauchst Mein Vorschlag wäre, das in die Schleife einzubauen die, die Punkte auswählt. Vermutlich brauchst Du den Mittelpunkt des Kreises Noch ein Tipp Du solltest vermeiden so elendslange Routinen zu schreiben besser mehrere kleine Funktionen und Routinen Das ist besser zu debuggen und auch einfacher, wenn etwas erweitert werden soll For itr = 0 To UBound(vEdges) '**nur Kreise und Bögen If vEdges(itr).GetCurve.IsCircle = True Then Set cupara = vEdges(itr).GetCurveParams3 '**nur wenn Start- und Endpunkt identisch sind handelt es sich um einen Kreis If cupara.EndPoint(0) = cupara.StartPoint(0) And cupara.EndPoint(1) = cupara.StartPoint(1) And cupara.EndPoint(2) = cupara.StartPoint(2) Then Set ent = vEdges(itr) Set CU = vEdges(itr).GetCurve circleparam = CU.CircleParams px = circleparam(0) py = circleparam(1) rr = circleparam(6) Debug.Print "Kreis gefunden " & px & " " & py & " " & rr End If End If boolstatus = ent.Select4(False, selData) Next itr ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LeonardStark Mitglied
Beiträge: 100 Registriert: 14.08.2018
|
erstellt am: 10. Mrz. 2020 11:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz, Klasse, ich danke dir für die Mühe. Ich hatte bisher leider nur Zeit es von der Grundfunktion zu testen, ob ich es schlussendlich in die Bemaßung eingebaut bekomme, kann ich noch nicht sagen. Aber damit klappt es bestimmt irgendwie, sieht gut aus die Variablen CU hab ich mir der Einfachheit halber als Variant definiert. Kannst du mir sagen, was du mit CU meinst? hier kommt eine popup-hilfe "See You". heißt ich soll mir selber einen passenden Namen ausdenken? Gruß Leonard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 10. Mrz. 2020 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für LeonardStark
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 10. Mrz. 2020 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für LeonardStark
Und wenn man jetzt denkt, mit der CODE Formatierung (links) wird das weggelassen ... Code: Dim CU As Curve
stellt man fest: Nö Gibt halt so ein paar gängige Abkürzungen wie SWX, DIVA, ... für möchte das CAD-Forum unbedingt eine Erklärung liefern. Anhängen als Text-Datei ist natürlich nicht betroffen, muss aber zum Lesen jedesmal extra geöffnet werden ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LeonardStark Mitglied
Beiträge: 100 Registriert: 14.08.2018
|
erstellt am: 17. Apr. 2020 14:17 <-- editieren / zitieren --> Unities abgeben:
hallo Heinz, deinen Code konnte ich erfolgreich in mein Makro einbauen. Allerdings kann ich den Mittelpunkt nicht als ordinatenbemaßung mit anwählen. hast du eine idee, woran das liegen kann? Die Koordinaten der auszuwählenden Punkte lasse ich mir anzeigen, die stimmen soweit. Aber im Mittelpunkt des Kreises ist ja kein Punkt zum Auswählen. Muss ich den kreis irgendwie anders anwählen für die Bemaßung? Ich hab testweise mal einen Skizzenpunkt im Mittelpunkt erzeugt, das hilft aber auch nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |