| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Eigenes UCS mit VBA (707 mal gelesen)
|
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 04. Apr. 2007 15:52 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich komme mit dem eigenen UCS in VBA nicht ganz klar. Habe mir hier sämtliche Beiträge durchgelesen, die Hilfe vesucht zu verstehen, aber irgendwie komm ich nicht weiter... Ich habe folgendes vor: Ich muss die Fräswege eines Falzes berechnen. Siehe Bild org.gif. Die schwarze Kontur gibt der Benutzer vor, anhand des Fräserdurchmessers berechne ich die inneren Linien (blau). Das ist alles soweit auch kein Problem, solange dieser Falz in der X - Achse gezeichnet wurde. Dieser Falz muss jetzt aber nicht nur in der X - Achse funktionieren, sondern in jedem beliebiegem UCS.
Ich habe mir das UCS mit dem Code in der Hilfe erstellt.
Code:
Dim ucsObj As AcadUCS Dim origin As Variant Dim xAxisPnt As Variant Dim yAxisPnt As Variant Dim startP As Variant Dim endP As Variant Dim startPV As Variant Dim endPV As Variant ' Define the UCS origin = ThisDrawing.Utility.GetPoint(, "Ursprung") xAxisPnt = ThisDrawing.Utility.GetPoint(origin, "X - Achse") yAxisPnt = ThisDrawing.Utility.GetPoint(origin, "Y - Achse") ' Add the UCS to the UserCoordinatesSystems collection Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(origin, xAxisPnt, yAxisPnt, "New_UCS") ThisDrawing.ActiveUCS = ucsObj ' Get the active viewport and make sure the UCS icon is on Dim viewportObj As AcadViewport Set viewportObj = ThisDrawing.ActiveViewport viewportObj.UCSIconOn = True viewportObj.UCSIconAtOrigin = True ThisDrawing.ActiveViewport = viewportObj
Die Benutzerauswahl sieht dann auch nocht gut aus, habe die Punkte so umgerechnet: Code:
ucsPoint = ThisDrawing.Utility.TranslateCoordinates(firstPoint, acWorld, acUCS, False)
Die Punkte für die Innenkontur berechne ich dann, beginnend mit dem äußersten Punkt, in bestimmten Schritten nach innen. Das heisst X_Endpunkt = X_Endpunkt + i und so weiter... Habe dann vor dem einzeichnen der Fräskontur alle Punkte mit TranslateCoordinates umgerechnet, die Fräswege werden aber immer noch in der X - Achse gezeichnet, und nicht im von mir bestimmten UCS. Ich hoffe, ich habe das nicht zu kompliziert geschrieben. Für Anregungen und Tipps, wie ich da vorgehen kann, wäre ich sehr dankbar! Pics im Anhang ------------------ Grüsse Benny [Diese Nachricht wurde von Benny4 am 04. Apr. 2007 editiert.] [Diese Nachricht wurde von Benny4 am 04. Apr. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1357 Registriert: 24.07.2002
|
erstellt am: 04. Apr. 2007 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für Benny4
|
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 04. Apr. 2007 16:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, ja das dachte ich eigentlich auch. So sollte es doch funktionieren: Ich berechne die gesamten Punkte im WKS, und rechne sie vor dem einzechnen in den Modelspace mit TranslateCoordinates um! Oder sehe ich da was falsch? Hmmm, ich glaube jetzt bin ich etwas schlauer geworden. So ganz gecheckt habe ich glaub ich noch immer nicht, aber das Programm funktioniert... ------------------ Grüse Benny [Diese Nachricht wurde von Benny4 am 05. Apr. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|