Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Länge einer Linie mit Variablen

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:  Länge einer Linie mit Variablen (1673 / mal gelesen)
Silentwolf
Mitglied
Selbständig

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

Beiträge: 4
Registriert: 20.06.2018

erstellt am: 20. Jun. 2018 09:34    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,
ich bin neu hier und interessiere mich für Autocad VBA..
Einige Beiträge habe ich schon angesehen aber leider noch nicht das passende gefunden.
Zu meiner Frage..
Ich habe Code gefunden um Linien auszuwählen und mittels msgbox werden mir diese Längen angezeigt.. diesen Code habe ich im Netz gefunden und läuft super.
Nun möchte ich diese Längen in variablen speichern und dann andere Linien mit diesen Längen "lengthen" also Total Länge bearbeiten.
Es geht hier um eine Abwicklung die ich selbst programmieren möchte.

Kann mir bitte hier jemand ein bissl Unterstützung geben wie ich am besten anfange?

Vielen Danke

Silentwolf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 20. Jun. 2018 11:43    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 Silentwolf 10 Unities + Antwort hilfreich

Hallo Silentwolf,

so grundsätzliche Dinge über ein Forum zu diskutieren wird schwierig. Man benötigt ja eine minimale Basis für den Austausch - die Begriffe sollten klar sein sonst werden dir die Antworten auch nicht helfen.

Ich entwickle meine Software immer erst auf dem Papier. Du solltest dir also einen grundsätzlichen Ablauf deines Programms überlegen, welche Objekte brauchst du, was müssen die Objekte für Eigenschaften haben, was müssen die Objekte können? Welche Prozesse/Teilprozesse gibt es, welche Objekte sind daran beteiligt ... .
Wenn das klar ist, dann kannst du mit dem Code beginnen.
(1) Objekte/Klassen definieren, Eigenschaften und Methoden implementieren.
(2) Prozesse im Code umsetzen.

Wie weit bist du allein gekommen? An welcher Stelle hakt es?

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Silentwolf
Mitglied
Selbständig

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

Beiträge: 4
Registriert: 20.06.2018

erstellt am: 20. Jun. 2018 15:32    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 Brischke,

danke erstmal für Deine Antwort!
Ja ich kann Dich schon verstehen aber da ich ziehmlich neu mit Autocad VBA bin ist es schwierig die richtigen Methoden und Begriffe zu definieren.

Code:
Sub GetLengths()
Dim SOS As AcadSelectionSet
Dim objSS As AcadSelectionSet
Dim intCode(0) As Integer
Dim varData(0) As Variant
Dim objEnt As AcadEntity
Dim entLine As AcadLine
Dim entPoly As AcadPolyline
Dim entLWPoly As AcadLWPolyline
  For Each SOS In ThisDrawing.SelectionSets
      If SOS.Name = "MySS" Then
        ThisDrawing.SelectionSets("MySS").Delete
      Exit For
      End If
  Next
  intCode(0) = 0: varData(0) = "LINE,POLYLINE,LWPOLYLINE"
  ThisDrawing.SelectionSets.Add ("MySS")
  Set objSS = ThisDrawing.SelectionSets("MySS")
  objSS.SelectOnScreen intCode, varData
 
 
  If objSS.Count < 1 Then
      MsgBox "No lines and polylines selected!"
  Exit Sub
  End If
 
  For Each objEnt In objSS
      Select Case objEnt.ObjectName
      Case "AcDbLine"
        Set entLine = objEnt
        MsgBox "Line is " & entLine.Length & " units long."
      Case "AcDb2dPolyline"
        Set entPoly = objEnt
        MsgBox "Polyline is " & entPoly.Length & " units long."
      Case "AcDbPolyline"
        Set entLWPoly = objEnt
        MsgBox "LightWeight Polyline is " & entLWPoly.Length & " units long."
      End Select
  Next

End Sub



Diesen Code habe ich im Netz gefunden..

Nun möchte ich die einzelnen Längen in Variablen speichern denke da ein Array.. es sind in meinen Fall 7 verschiedene Längen..
Zudem habe ich einen Grid als Block erstellt dieser wird explodiert und soll dann die ersten 7 vorhandenen Linien mit den in den Array gespeicherten Längen ändern.
Wahrscheinlich gibt es eine bessere Lösung aber dachte das könnte mal ein Ansatz sein.

Leider fehlt mir noch das Verständis was alles in Autocad VBA möglich ist.. deshalb wäre ein Ansatz eine Hilfe .. oder welche Methoden ich mir ansehen könnte in der Online Hilfe...

Vielen Dank..
Hoffe das ist ein bissl besser jetzt??

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 20. Jun. 2018 17:54    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 Silentwolf 10 Unities + Antwort hilfreich

(1) Was ist deine eigentliche Aufgabenstellung?
(2) Welche Erfahrung hast du beim Zeichnen mit AutoCAD?
(3) Wie würdest du diese Teilaufgabe in AutoCAD manuell lösen?
(4) Welche Erfahrung hast du in VBA?

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Silentwolf
Mitglied
Selbständig

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

Beiträge: 4
Registriert: 20.06.2018

erstellt am: 20. Jun. 2018 18: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

Hallo Holger,
danke nochmal für Deinen Input!

1.) Die eigentliche Aufgabenstellung ist eine Abwicklung eines schräggeschnittenen Rohres in VBA zu verwirklichen
2.) Ich kann mit Autocad ganz gut zeichnen also kenne das Programm schon lange und zeichne damit also manuel.
3.) Es werden Linien gemessen die in der Vorderansicht entstehen also die Wahren Längen.. diese werden dann auf einen Grid der geteilt ist z.B. 50mm durchmesser Rohr..
Umfang=157,0796 dieser Grid ist in 12 Teile geteilt und ist als Block definiert. Also eine waagrechte Linie --Länge 157,0796 diese Linie ist geteilt in 12 Teile
bei jeden Punkt befinden sich Linien die 90Grad zu den Schnittpunkten befinden.
Nun möchte ich nachdem ich die Wahrenlängen also die Linien auswähle diese zwischengespeichert werden und dann die erste Wahre Länge soll bei Punkt 1 die 90 Grad Linie
mit diesen Wert verlängern oder verkürzen. Also Länge Total..1 Wahre Länge .. und soweiter eben alle 7 Wahren Längen.. die weiteren Linien sind nicht mehr relevant da
diese einfach gespiegelt werden.
So mache ich es wenn ich es manuel zeichne..
In VBA habe ich schon Erfahrung aber in Excel und Access leider nicht in Autocad...noch nicht deshalb weiß ich auch nicht genau was hier für Befehle nötig wären..


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 21. Jun. 2018 08:30    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 Silentwolf 10 Unities + Antwort hilfreich

... ok, dann mal mein Ansatz zu deiner Aufgabenstellung.

a) das Rohr existiert in 3d:
a1) du explodierst den Zylinder, die explodierten Elemente enthalten auch Kreise und Ellipsen der Stirnseiten des Zylinders. (Explode)
a2) einen Kreis oder eine Ellipse unterteilst du in XX Teile und ermittelst die kürzesten Abstände zu den gegenüberliegenden entlang des Vectors der Zylinderachse. (GetPointAtParam | GetClosestPointTo)
a3) Damit hast du alle relevanten Punkte und Abstände, mit denen du die Abwicklung Zeichnen kannst.

b) du hast eine 2D-SeitenAnsicht
b1) du wählst die beiden Linien, die die Stirnseiten/Schnittfläche darstellen
weiter mit a2)  ...

Ich würde an deiner Stelle nicht damit anfangen irgendwelche vorhandenen Grid's zu manipulieren .. Neuzeichnen ist da einfacher und sicherer.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Silentwolf
Mitglied
Selbständig

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

Beiträge: 4
Registriert: 20.06.2018

erstellt am: 22. Jun. 2018 10:45    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 Holger,

danke ich werde es mir mal in Ruhe ansehen..
Bin leider im Moment viel unterwegs deshalb meine späte Antwort!
Melde mich wieder wenn ich noch Fragen dazu habe!

Schönen Tag

Silentwolf

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: 02. Jul. 2018 10: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 Silentwolf 10 Unities + Antwort hilfreich

Ich würde das Ganze etwas anders angehen wollen. Linien auf dem Rohrzylindermantel zu berechnen ist relativ einfach. Schnittpunkte dieser Linien mit einer Ebene zu finden ebenfalls. Da hilft dir das Netz mit Vektorgeometrie. (Auch mal mit Suchwort VB6 googlen)  Prinzipiell wird eine Autocad Linie durch ihre Punkte definiert. Um eine Linie zu "lengthen" musst du also "nur" diese Koordinatenpunkte verändern. Man kann Liniendurchstoßpunkte auch mit Autocad direkt ermitteln. z.B. 3D Linie mit einem 3D Face. Ist aber meines Erachtens weit aufwändiger als die paar Formeln aus dem Netz zu fischen. Autocad hat verschiedene Linien oder auch Polylinien. Um an diese Linienpunkte zu bekommen benötigst du je nach Linientyp leicht unterschiedliche Routinen. Normale Linien haben nen Start und nen Endpunkt und Polylinien gibt es in den Geschmacksrichtungen mit 2D Koordinaten und 3D Koordinaten. Ich habe mir seinerzeit 2 Routinen geschrieben die universell diese Punkte auslesen und setzen. (Egal was da vorliegt).  Wenn du die Rohre in 3d Extrudierst kann auch der Bfehl _FLATSHOT ne Idee sein. Auch wenn der sich über VBA nicht automatisieren lässt. SOLDRAW lässt sich hingegen automatisieren, ist aber weit aufwändiger einzustellen. Vieleicht stellst du ja auchmal nen Screenshot zur verfügung, damit man besser erkennen kann, was due wirklich machen willst. Lieben Gruß aus Finnland

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