Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Sel set Polylinie weiterverwenden

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
  
PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  Sel set Polylinie weiterverwenden (654 mal gelesen)
diffusion
Mitglied
Dipl.-Ing.

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

Beiträge: 2
Registriert: 01.06.2008

erstellt am: 01. Jun. 2008 02:26    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,
Kann mir bitte jemand sagen wie ich eine gezeichnete polylinie weiterverwende anstelle einer aus dem script erstellten?
Im Moment verwende ich noch die sub routine "initialize" (1.Script) wuerde aber gerne eine polylinie zeichnen und sie dann auswaehlen (2. Script) kriege aber den link zwischen den beiden Scripten hin.

'1.Script
Const MAX_NODES = 150
Type node
    pos(2) As Double
    temp As Double
    link As AcadCircle
End Type
Public chain As Acad3DPolyline
Sub main()
    Dim nodes(MAX_NODES) As node
    initialize nodes
     
    For d = 0 To 100
        calculate nodes
        update_nodes nodes
    Next d
End Sub
Sub calculate(nodes() As node)
    Dim l_n As Integer, r_n As Integer
    For n = 0 To MAX_NODES
        If (n > 0) Then
            l_n = n - 1
        Else
            l_n = MAX_NODES
        End If
        If (n < MAX_NODES) Then
            r_n = n + 1
        Else
            r_n = 0
        End If
        nodes(n).temp = (nodes(l_n).pos(2) + nodes(n).pos(2) + nodes(r_n).pos(2)) / 3
    Next n
End Sub
Sub update_nodes(nodes() As node)
    For n = 0 To MAX_NODES
        nodes(n).pos(2) = nodes(n).temp
        nodes(n).link.center = nodes(n).pos
        chain.Coordinate(n) = nodes(n).pos
    Next n
    ZoomExtents
End Sub
Sub initialize(nodes() As node)
    Dim pts((MAX_NODES + 1) * 3 - 1) As Double
    ThisDrawing.SendCommand "erase all  "
    Randomize
    For i = 0 To MAX_NODES
        nodes(i).pos(0) = i
        nodes(i).pos(2) = Rnd * 200
        Set nodes(i).link = ThisDrawing.ModelSpace.AddCircle(nodes(i).pos, 0.5)
        pts(p) = nodes(i).pos(0)
        pts(p + 1) = nodes(i).pos(1)
        pts(p + 2) = nodes(i).pos(2)
        p = p + 3
    Next i
    Set chain = ThisDrawing.ModelSpace.Add3DPoly(pts)
    ZoomExtents
End Sub

'2.Script
Option Explicit
Sub main()
    read_drw 0
End Sub
Sub read_drw(token As Integer)
    Dim i As Integer
    Dim ss As AcadSelectionSet
    Dim groupCode(0) As Integer
    Dim dataValue(0) As Variant
    Dim asolid As AcadPolyline
    groupCode(0) = 0
    dataValue(0) = "polyline"
    sel_set_del 0
   
    Set ss = ThisDrawing.SelectionSets.Add("collector")
   
    ss.Select acSelectionSetAll, , , groupCode, dataValue
   
    If (ss.Count > 0) Then
        For i = 0 To ss.Count - 1
          Set asolid = ss.Item(i)
        Next i
    End If
    ss.Delete
End Sub
Sub sel_set_del(token As Integer)
    While (ThisDrawing.SelectionSets.Count > 0)  'if there
        ThisDrawing.SelectionSets.Item(0).Delete 'then delete
    Wend
End Sub

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

AutoCAD ACA 2024
Solidworks 2022 Sp5
Enterprise PDM 2022 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell Precision 3660
Intel Core i9-12900K
32 GB Arbeitsspeicher
2x Dell U2415

erstellt am: 02. Jun. 2008 06: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 Nur für diffusion 10 Unities + Antwort hilfreich

Hi diffusion,

Erst einmal musst du eine Variablen-Deklaration ändern: Dim asolid As Acad3DPolyline.
Erzähl doch mal, was du genau vor hast. Soll das dann eine Externe EXE-Datei werden?!

Gruß, Carsten

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

diffusion
Mitglied
Dipl.-Ing.

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

Beiträge: 2
Registriert: 01.06.2008

erstellt am: 02. Jun. 2008 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

Vielen Dank, habe es schon rausbekommen.
Wollte was zeichnen und diese Daten Mittels SelectionSet zurueck schicken.
Loesung ist ungefaehr so:

If (ss.Count > 0) Then
          Set valley(0) = ss.Item(0)
           
            MAX_NODES = (UBound(valley(0).Coordinates) / 3) - 1
         
            ReDim nodes(MAX_NODES) As node

            For j = 0 To MAX_NODES
            coordin = valley(0).Coordinate(j)
            nodes(j).pos(0) = coordin(0)
            nodes(j).pos(1) = coordin(1)
            nodes(j).pos(2) = coordin(2)
            Next j
       
    End If

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