Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Variable die die Werte von Position X, PositionY enthält

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: 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


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

Beiträge: 3
Registriert: 13.09.2016

Autodesk Produkt Design Suite 2015
I5, 16GB RAM

erstellt am: 13. Sep. 2016 18:09    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 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



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

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 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 Eingedi 10 Unities + Antwort hilfreich

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


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

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 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 Eingedi 10 Unities + Antwort hilfreich

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



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

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 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 Eingedi 10 Unities + Antwort hilfreich

@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


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

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 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 Eingedi 10 Unities + Antwort hilfreich

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


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

Beiträge: 3
Registriert: 13.09.2016

Autodesk Produkt Design Suite 2015
I5, 16GB RAM

erstellt am: 21. Sep. 2016 08:59    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 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


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

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 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 Eingedi 10 Unities + Antwort hilfreich

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 >>)

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