Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Spline teilen, Punktekoordinaten auslesen

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:  Spline teilen, Punktekoordinaten auslesen (2783 mal gelesen)
insidERR
Mitglied
2/3D Konstruktion, VBA/.net/Android Programmierung, EDV


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

Beiträge: 128
Registriert: 27.08.2007

erstellt am: 11. Mrz. 2009 14:08    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 suche eine Möglichkeit in der aktuellen Zeichnung auf ein Spline ne bestimmte Anzahl von Punkten zu setzen("Entwurf->Punkt->Teilen") und dann die Koordinate(X,Y) auslesen.

Hat jemand ne Idee?
Danke

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


Ex-Mitglied

erstellt am: 11. Mrz. 2009 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

'Entwurf' kommt vielleicht aus Mech, ich kenne das halt als Befehl 'teilen'/'_divide' ==> und da erzeugt Dir ja schon AutoCAD die Punkte (oder optional Blöcke).

Und als nächstes 'dataextraction' und Du bekommst Die Punkte/Blöcke als File exportiert (samt den Eigenschaften, die Du beim Extract angibst.

Jetzt die Rückfrage: ist das schon die Lösung? Eben nur mit AutoCAD-Befehlen oder wie sollte der weitere Weg aussehen?

- alfred -

------------------
www.hollaus.at

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 11. Mrz. 2009 14:20    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 insidERR 10 Unities + Antwort hilfreich

in Lisp gibt es für so was die vlax-curve Funktionen ... nur mal als Randbemerkung

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

insidERR
Mitglied
2/3D Konstruktion, VBA/.net/Android Programmierung, EDV


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

Beiträge: 128
Registriert: 27.08.2007

erstellt am: 11. Mrz. 2009 15:06    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

Von LISP hab ich keine Ahnung und auch nicht die Zeit mich damit zu beschäftigen.

Die Linie teilen kann man manuel auslösen, aber ich will es automatisieren.

Hintergrund der ganzen Sache:
wir haben einige Laufradmeridiankonturen, welche mit Splines gezeichnet sind. Die wollen wir in ein anderes Programm exportieren. Dazu muss man auf die Splines "Punkte" legen und von den die Koordinaten(X,Y) in eine Textdatei exportieren. Diese wird dann von dem anderen Programm eingelesen und weiter verarbeitet.
Von Hand dauert es lange und ist umständlich(nach dem Export muss man die Datei noch weiter bearbeiten), deswegen will ich es über ein Makro lösen.
Das Makro soll so aufgebaut sein:
Auf Zwei preparierte Splines in der aktuellen Zeichnung je 50 Punkte legen.
Die beiden Splines löschen.
Dann die Koordinaten(X,Y) von allen Punkten Zeile für Zeile in eine bestimmte Textdatei speichern.

Bräuchte schon etwas mehr als "_divide" und "dataextratcion".
Im Forum finde ich keine passenden Beispiele.

[Diese Nachricht wurde von insidERR am 11. Mrz. 2009 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 11. Mrz. 2009 15:17    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 insidERR 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von insidERR:
Von LISP hab ich keine Ahnung und auch nicht die Zeit mich damit zu beschäftigen.

Schade, damit könnte man die Sache relativ schnell machen (lassen) , also die Koordinaten an den 50 Stellen rausschreiben ohne irgendwelche Punkte anzulegen ect.


------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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


Ex-Mitglied

erstellt am: 11. Mrz. 2009 15:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

dann hätte ich (um es mal einfach zu halten), folgende Vorgehensweise gewählt:

a) ModelSpace.Count zwischenspeichern (vorausgesetzt alles spielt sich im Modellbereich ab), damit wissen wir, wieviele Elemente derzeit vorhanden sind

b) mit SendCommand den Befehl '_divide' starten und Optionen wie Abstand, Blockname (wenn nötig) mitgeben

c) dann für jedes Element im Modellbereich, dessen Index (aus der Sicht einer Collection) >= dem zuvor gespeicherten ModelSpace.Count ist, ist ein Punkt bzw. ein Block, dessen Koordinaten Du auslesen kannst und mittels eigenem Export in eine Datei mit Deinem Syntax schreibt.

War das verständlich?

- alfred -

------------------
www.hollaus.at

insidERR
Mitglied
2/3D Konstruktion, VBA/.net/Android Programmierung, EDV


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

Beiträge: 128
Registriert: 27.08.2007

erstellt am: 11. Mrz. 2009 15: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

Das Ziel ist mir klar, nur wie ich dahin komme nicht.
Mir fehlt der genaue Code, wie ich die einzelnen Punkte finde und deren Koordinaten auslesen kann.
Ich habe mir für eine andere Geschichte aus verschiedenen Beispielen hier aus dem Forum was gebastelt und bräuchte sowas für den aktuellen Fall.

Code:
'------------------------------
Public Sub Freigabe() 'Zeichnung freigeben    Befehlscode für Button  "^c^c^p-vbarun BlockAttribute.Freigabe"
    Dim BlockCol As Collection, Stelle As Integer, setFree As Boolean, tmpUser As String: Dim Objekt As Object
    Set BlockCol = New Collection
    For Each Objekt In ThisDrawing.ModelSpace
    If Objekt.ObjectName = "AcDbBlockReference" Then
        If Objekt.Name = "Company" Or Objekt.Name = "MASSBLATT-SCHRIFTFELD" Then
                BlockCol.Add Objekt
                GoTo N
        End If
    End If
    Next
    ThisDrawing.Utility.Prompt vbNewLine & "Schriftfeld wurde nicht gefunden"
    Exit Sub
N:
    Dim AktBlock As AcadBlockReference
    Set AktBlock = BlockCol(1)
    AktAtt = AktBlock.GetAttributes
   
    For j = 0 To UBound(AktAtt)
        DoEvents
        If (AktAtt(j).TagString = "GEN-TITLE-CHKM{5}" Or AktAtt(j).TagString = "GEN-TITLE-PRÜFER{6}") And AktAtt(j).TextString = "" Then setFree = True
    Next
   
    If setFree = False Then Exit Sub
   
        If MsgBox("Soll die Zeichnung freigegeben werden?", vbYesNo, "Zeichnung ist nicht freigegeben") = vbYes Then
       
          tmpUser = InputBox("Bitte Prüfer eingeben", "Zeichnung freigeben", cadBenutzer): If tmpUser = "" Then Exit Sub      'Name
       
            For j = 0 To UBound(AktAtt)
                DoEvents
                If AktAtt(j).TagString = "GEN-TITLE-CHKD{5.41}" Then AktAtt(j).TextString = Date  'Datum
                If AktAtt(j).TagString = "GEN-TITLE-PDAT{5.44}" Then AktAtt(j).TextString = Date  'Datum
                If AktAtt(j).TagString = "GEN-TITLE-CHKM{5}" Then AktAtt(j).TextString = tmpUser
                If AktAtt(j).TagString = "GEN-TITLE-PRÜFER{6}" Then AktAtt(j).TextString = tmpUser
            Next
            ThisDrawing.Regen acActiveViewport 'aktualisiert die Zeichnung
        End If
End Sub
'----------------------

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


Ex-Mitglied

erstellt am: 11. Mrz. 2009 16:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

was Dein Code mit der Aufgabenstellung zu tun hat, entzieht sich mir leider.

geschrieben, nicht getestet, keine Fehlerprüfungen, Tippfehler möglich:

Code:
'zuerst holen wir uns das Element
dim tEnt as AcadEntity
dim tPnt as Variant
call ThisDrawing.Utiltiy.GetEntity(tent,tpnt,"Spline zeigen: ")

'jetzt holen wir uns aus dem Modellbereich die Anzahl der vorhandenen Elemente
dim tModSpCount as Long
tModSpCount = ThisDrawing.ModelSpace.Count

'jetzt erzeugen wir Punkte durch Teilung
call ThisDrawing.SendCommand("_divide" & vbcr & 50 & vbcr)

dim i as Long
for i = tModSpCount to ThisDrawing.ModelSpace.Count -1
  dim tAcadPnt as AcadPoint
  set tAcadPnt = ThisDrawing.Modelspace(i)
  'tAcadPnt.Coordinates ==> hier die geomtrische Position
next


- alfred -

------------------
www.hollaus.at

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 11. Mrz. 2009 16:25    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 insidERR 10 Unities + Antwort hilfreich


Splinekoords.VLX.txt

 
Anbei mal ein BSP in Lisp zur Machbarkeit, als vlx abspeichern und dann per Drag&Drop in die Zeichnung ziehen und mit SPLINEKOORDS starten ...

------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

insidERR
Mitglied
2/3D Konstruktion, VBA/.net/Android Programmierung, EDV


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

Beiträge: 128
Registriert: 27.08.2007

erstellt am: 11. Mrz. 2009 16: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

Zitat:
Original erstellt von a.n.:
Hi,

was Dein Code mit der Aufgabenstellung zu tun hat, entzieht sich mir leider.

geschrieben, nicht getestet, keine Fehlerprüfungen, Tippfehler möglich:

.......

- alfred -


Ja woll !!!
Wir kommen der Sache schon sehr nah. Genau sowas hab ich gesucht.
Das mit der Splineteilung geht noch nicht, aber ich komme an die Koordinaten der Punkte dran. Das ist sehr gut. Vielen Dank 

(den Code von vorhin hab ich nur zur Veranschaulichung gepostet um zu zeigen was ich brauche, hat mit der aktuellen Sache nicht viel zu tun)

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



Werkstudent*in (w/m/d) Planung und Projektabwicklung im Bereich der Energieversorgung durch Stromschienen

Wir sind ein dynamisches, mittelständisches Unternehmen aus Berlin mit einer reichen Geschichte in der Beratung rund um die elektrische Energieversorgung. Unsere Expertise umfasst die Dimensionierung von Stromschienenanlagen, inklusive komplexer Netzberechnungen und detaillierter Werksplanung bis hin zur Montage. Mit Projekten im gesamten deutschsprachigen Raum helfen wir, die Zukunft der Energieversorgung zu gestalten....

Anzeige ansehenEnergie und Umwelttechnik

Ex-Mitglied

erstellt am: 11. Mrz. 2009 16:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Sorry, Objekt vergessen:

call ThisDrawing.SendCommand("_divide" & vbcr & "(handent """ & tEnt.Handle & """)" & vbcr & 50 & vbcr)

so sollte es jetzt funktionieren, viel Erfolg, - alfred -

------------------
www.hollaus.at

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