| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Variable die die Werte von Position X, PositionY enthält (1118 / mal gelesen)
|
Eingedi Mitglied
Beiträge: 3 Registriert: 13.09.2016 Autodesk Produkt Design Suite 2015 I5, 16GB RAM
|
erstellt am: 13. Sep. 2016 18:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum-User ich bin neu hier und hoffe das ich die Frage im richtigen Forum stelle. Mein Problem ist welcher Variablenname die Werte von Position X und Position Y enthält? wenn ich im Modellbereich einen Block markiere und dann RMT ,,Eigenschaften,, abrufe wird unter der Rubrik ,,Geometrie,, mit Position X bzw. Y der Abstand des Block-Basispunktes zum WKS angegeben. ich habe schon einiges gegoogeld aber dazu nichts gefunden. vielen Dank im Voraus falls einer von euch mir da eine Tipp geben kann Grüße karl-peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 13. Sep. 2016 18:48 <-- editieren / zitieren --> Unities abgeben: Nur für Eingedi
Hallo karl-peter, Willkommen im Forum Ja so mal auf die Schnelle Programme zu schreiben ist nicht besonders einfach, da sollte man über die Hilfe zunächst einmal die Basics des Objektmodelles sich aneignen. Hier mal ein Beispiel wie darauf zugegriffen werden kann:
Code:
' Create a new block called "New_Block" Dim blockObj As AcadBlock ' Define the block Dim insertionPnt(0 To 2) As Double insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0# ' Add the block to the blocks collection Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "New_Block") MsgBox blockObj.name & " has been added." & vbCrLf & _ "Origin: " & blockObj.origin(0) & ", " & blockObj.origin(1) _ & ", " & blockObj.origin(2), , "Add Example"
Du hast Dir auch gleich einen Spezialfall herausgesucht, denn wie man sieht wird in obigen Beispiel eine "Bauanleitung" für einen Block eingefügt. In nachfolgendem Beispiel wird ebenfalls eine Bauanleitung erstellt (Blockobjekt und zugehöriger Kreis) und dieser Block in die Zeichnung eingefügt (referenziert). Code:
Sub Example_InsertBlock() ' This example creates a block containing a circle. ' It then inserts the block. ' Create the block Dim blockObj As AcadBlock Dim insertionPnt(0 To 2) As Double insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0# Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock") ' Add a circle to the block Dim circleObj As AcadCircle Dim center(0 To 2) As Double Dim radius As Double center(0) = 0: center(1) = 0: center(2) = 0 radius = 1 Set circleObj = blockObj.AddCircle(center, radius) ' Insert the block Dim blockRefObj As AcadBlockReference insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0) ZoomAll End Sub
Wie Du siehst kannst Du nicht direkt auf die X, Y, Z Koordinaten zugreifen sondern mußt den "Umweg" über das InsertionPoint - Array machen: (0)=X (1)=Y aber immer im Weltkoordinatensystem. Hast Du ein BKS eingestellt müssen diese Koordinaten zunächst Transformiert werden bevor sie mit der Anzeige im Eigenschaftsfenster übereinstimmen. Gleiches gilt ähnlich für andere Autocad-Objekte, hier gibt es Coordinate-Arrays, die auch noch unterschiedlich aufgebaut sein können (2D, 2D mit Höhe, 3D) Zitat: ich habe schon einiges gegoogeld aber dazu nichts gefunden.
F1 wäre da wohl sinnvoller gewesen Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rexxitall Mitglied Dipl. -Ing. Bau
Beiträge: 266 Registriert: 07.06.2013 Various: systems, Operating systems, cad systems, cad versions, programming languages.
|
erstellt am: 18. Sep. 2016 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für Eingedi
Kleiner Spezialhinweis noch. Der Insertationpoint oder etwas vergleichbares kommt in vielen Autocad Entities vor. Meist erfordern die einen VARIANT. Zum Beispiel wenn an den Block mittels des Insertationpoints verschieben will. Es ist leider nicht konsistent. Da mag sich dem Anfänger die Frage stellen, wie man einem Variant ein Koordinatenarray unterjubeln kann: DIM P(2) as Double V=P Wie gesagt Koordinatenarrays können funktionieren, müsses es aber nicht. Da merkt man das das ganze historisch gewachsen ist In der Hilfe bei den Beispielen (Notfalls eine alte Hilfe besorgen, in neueren fehlen die Beispiele zum Teil) findet sich dazu ein Hinweis. Manchmal weigern sich Elemente auch da zu erscheinen wo der Insertation Punkt ist. Abhilfe "MOVE" DIM ZERO(2) as double DIM INSERTATION (2) as double'oder variant 'hier entity erzeugen PSEUDOCODE : set entity=thisdrawing.whateveradd (whateverneeded) und dann entity.move(ZERO, INSERTATION) 'wenn das Elemnt immer am Nullpunkt erscheint. Ich mach das immer so: erst guggen ob es mit dem Array funktioniert. Tut sich nix, probier ichs mit dem Variant und wenn gar nichts hilft... MOVE Man könnt sich na klar auch ne Liste machen was wann wie funktioniert *lach* aber irgendwie ist der Mensch ja faul Happy coding ------------------ Wer es nicht versucht, hat schon verlorn Und bei 3 Typos gibts den vierten gratis ! <<< for sale ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 18. Sep. 2016 17:52 <-- editieren / zitieren --> Unities abgeben: Nur für Eingedi
@rexxitall: Ich weiß ja nicht was Du für Programme schreibst, aber ich hatte noch nie Probleme beim setzten eines Elementes mit den dafür zuständigen Eigenschaften (block.origin, blockref.InsertionPoint, entity.Coordinate, ... ) Saubere Programmierung vorausgesetzt. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rexxitall Mitglied Dipl. -Ing. Bau
Beiträge: 266 Registriert: 07.06.2013 Various: systems, Operating systems, cad systems, cad versions, programming languages.
|
erstellt am: 19. Sep. 2016 19:24 <-- editieren / zitieren --> Unities abgeben: Nur für Eingedi
Klaus, dann freu dich Vielleicht hab ich auch nur abgedrehtere Software als du oder schreib wirklich abgedrehtere Funktionen. Mag auch daran liegen das ich öfter mal zwischen den Versionen wechsel. Mir ist halt nur aufgefallen das es da mitunter ein sonderbares Verhalten bei den Koordinaten gibt, obwohl dem nicht sein sollt. Und jemand der augenscheinlich noch neu in der Materie ist, schier dran verzweifeln kann. Kann nicht jeder so perfekt sein wie du Munter bleiben
------------------ Wer es nicht versucht, hat schon verlorn Und bei 3 Typos gibts den vierten gratis ! <<< for sale ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Eingedi Mitglied
Beiträge: 3 Registriert: 13.09.2016 Autodesk Produkt Design Suite 2015 I5, 16GB RAM
|
erstellt am: 21. Sep. 2016 08:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Ihr beiden vielen Dank erst mal für die Tipps sorry das es so lange gedauert hat bis ich mich melde bin im Urlaub :-) werde mich aber Anfang Oktober wieder mit der Frage befassen können :-) viele Grüße karl-peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rexxitall Mitglied Dipl. -Ing. Bau
Beiträge: 266 Registriert: 07.06.2013 Various: systems, Operating systems, cad systems, cad versions, programming languages.
|
erstellt am: 23. Sep. 2016 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für Eingedi
Dann erhol dich mal gut ! Ich hab letztes Weihnachten ne Polygon Lib im Urlaub geschrieben... Die Lib ist Klasse aber nochmal kann ich glaub ich den Stunt bei meiner Wikingerin nicht bringen. Letztes mal hat sie mir alle Rechner abgenommen als ich in Rauma eintraf. Dumm ist sie ja nicht *lacht* ------------------ Wer es nicht versucht, hat schon verlorn Und bei 3 Typos gibts den vierten gratis ! <<< for sale ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|