| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB |
Autor
|
Thema: API Blöcke in Zeichnungsansichten einfügen (3446 mal gelesen)
|
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: 22. Okt. 2012 08:33 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen ich steh im Moment etwa auf der Leitung folgende Aufgabenstellung: ich möchte per API, in einer Zeichnung, in der Nähe der Maße, Blöcke einfügen. folgendes hab ich bis jetzt versucht: 1.) Versuch alle Displaydimension Objekte durchlaufen das Annotation Objekt ausgelesen den Einfügepunkt ermittelt und dann die Blöcke eingefügt funktioniert wunderbar NUR die Blöcke hängen nicht an der Ansicht wenn ich die Ansicht verschiebe, werden die Blöcke nicht mit verschoben 2.) Versuch alle Displaydimension Objekte durchlaufen das Annotation Objekt ausgelesen den Einfügepunkt ermittelt die dazugehörige Ansicht ermittelt den Maßstabsfaktor der Ansicht ausgelesen die Position der Ansicht ausgelesen die Ansicht zur aktiven Ansicht gemacht und dann die Blöcke an Hand der Position und des Maßstabsfaktors eingefügt funktioniert wunderbar die Blöcke hängen an der Ansicht und werden auh schön mit verschoben NUR wenn die Ansicht mit "Ansicht drehen" gedreht wurde werden die Blöcke eben um diesen Wert verdreht eingefügt. ich hab mal versucht mit "ModelToViewTransform" und "Inverse" den passenden Einfügepunkt zu ermitteln bin aber bis jetzt gescheitert. Hat irgendwer ev. eine Idee für das Problem? PS ich hab keine andere Möglichkeit gefunden den Einfügepunkt der Bemaßung zu ermitteln, als über das Annotation Objekt. Gibt es ev. eine andere Möglichkeit? ------------------ Grüße Heinz [Diese Nachricht wurde von nahe am 22. Okt. 2012 editiert.] [Diese Nachricht wurde von nahe am 22. Okt. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
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: 22. Okt. 2012 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
Hallo Heinz, keine Erfahrung meinerseits dazu, aber wenn ich das richtig verstanden habe läuft Variante 2 doch schon so gut, nur bei gedrehten Ansichten wird der Block entsprechend auch gedreht und du willst den aber "normal" lesen können. Dazu müsstest du ihn doch beim Einfügen "nur" um den passenden Gegenbetrag zur View zurückdrehen. Den Rotationswinkel einer Zeichenansicht müsstest du mit View::Angle bekommen, die View hast du doch schon. Und beim SketchManager::InsertSketchBlockInstance gibt es als letzten Paramter auch einen Winkel, wenn du da einfach den negativen Wert eingibst zur Ansichtsdrehung sollte der Block wieder gerade stehen. Aber vielleicht hab ich dein Problem auch trotz der sehr guten Beschreibung nicht verstanden ... Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de 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: 22. Okt. 2012 13:19 <-- editieren / zitieren --> Unities abgeben:
|
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: 22. Okt. 2012 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
|
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: 22. Okt. 2012 13:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan es geht nicht um die Drehrichtung des Blocks die hab ich wie von Dir geschrieben über den Winkel der Ansichtsverdrehung "im Griff". Es geht darum, dass der Einfügepunkt des Blocks, um den Winkel der Ansichtdrehung versetzt(verdreht) eingefügt wird (siehe Bild) ------------------ Grüße Heinz 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: 22. Okt. 2012 14:16 <-- editieren / zitieren --> Unities abgeben:
Hallo ich hab keine Ahung was zur Zeit mit der Seite los ist. Poste jetzt die Antwort zum 2. Mal Stefan, es hat nichts mit der Drehung des Blocks zu tun sondern mit dem Einfügepunkt des Blocks (siehe Bild) ------------------ Grüße Heinz 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: 24. Okt. 2012 08:49 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 24. Okt. 2012 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
Hallo Heinz, hatte das Problem beim erzeugen eines Ausbruches das ich die Masse der Skizze nicht auf die rotierte Ansicht beziehen durfte sondern auf die noch nicht gedrehte beziehen mußte, sprich SWX hat erst beim erzeugen des Ausbruches die Skizze gedreht. Ich weiß jetzt nicht ob mann feststellen kann ob und um welchen Winkel eine Ansicht gedreht wurde aber wenn ja könntest du ja dies Abfragen und entsprechend reagieren z.B. den Wert für die X und Y Koordinate des Einfügepunktes tauschen wenn Drehwinkel -90° oder ähnlich. Kann natürlich nicht sagen ob das der richtige weg ist, ist halt nur eine Idee von mir Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete 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: 24. Okt. 2012 10:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd danke mal für den Hinweis. Ich geh mal davon aus, dass es nicht so einfach sein wird, weil wenn ich mich schon mit herumschlage, möchte ich es gleich ordentlich machen und auch verstehen D.h. wenn ich es richtig verstehe geht das mit dem x/y tauschen ja nur wenn die Ansicht um 90° gedreht ist. Was ist aber wenn die Ansicht um einen anderen Winkel verdreht ist z.B. 22°? PS ja man kann feststellen um welchen Winkel die Ansicht gedreht wurde. werd mal versuchen im WWW fündig zu werden. den Punkt um den Winkel verdreht zu berechnen hab ich schon versucht, nur hab ich scheinbar etwas Problem wenn die Koordinaten die Vorzeichen wechseln. 1x ist meine Berechnung ok und 1 x nicht anbei meine Überlegung für die Drehung p2 = Punkt der gedreht werden soll wi = Winkel um den die Ansicht verdreht ist Function rotate_point(p2 As Variant, wi As Double) As Variant Dim temp(2) As Double Dim r As Double Dim w As Double Dim ww As Double x = p2(0) y = p2(1) 'berechne den Radius r = Sqr(x * x + y * y) 'berechne den Winkel des aktuellen Punktes w = Atn(y / x) 'addiere den Umkehrwert des Winkel der Ansicht zum Winkel des Punktes ww = w + wi * -1 'berechne die Koordinaten des Punktes neu x = Cos(ww) * r y = Sin(ww) * r temp(0) = x temp(1) = y temp(2) = 0 rotate_point = temp End Function
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 24. Okt. 2012 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
Hallo Heinz, mir fällt gerade auf dass das Tauschen der X und Y Koordinaten bei mir nur Glück war weil es eine zentrische Rechteckskizze war . Aber mit deiner Transformierung sollte es eigentlich gehen, mich wundert nur das ww = w + wi * -1 zur Bestimmung des neuen Winkels, sollte nicht eigentlich ww = w + wi stimmen. Leider habe ich natürlich nichts womit ich das ganze testen könnte. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete 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: 24. Okt. 2012 15:10 <-- editieren / zitieren --> Unities abgeben:
|
| |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 24. Okt. 2012 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für nahe
Jetzt hab ich es glaube gecheckt, du hast die Koordinaten von der berits gedrehten Ansicht aber brauchst ja die der theoretisch noch nicht gedrehten Ansicht daher abziehen sprich Rückwärts rechnen . Aber da ich von VBA nicht viel Ahnung habe, lasse ich dich mal in Ruhe machen, sollte von mir auch nur ein Denkanstoss sein in welche Richtung dein Problem liegen könnte, könnte natürlich auch der Holzweg sein . Gruß und gutes Gelingen Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |