Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  vla-ss items sortieren und neu zusammensetzen

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:  vla-ss items sortieren und neu zusammensetzen (1681 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 04. Dez. 2013 09:56    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

Mir ist die Arbeitsweise mit vla-objekten unbekannt. Ich möchte erreichen, dass die gewählten Objekte (Schraffuren) nach der Erstellungszeit (Objekthandle) sortiert werden und der vla-ss neu erzeugt wird. Ich weiss nicht, ob das der richtige Weg ist, vielleicht geht es einfacher. Ich möchte aus der sortierten Liste NewList die Items zum neuen SS acsel hinzufügen

Code:
(ssget '((0 . "HATCH")))
(setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
(setq ss (vla-get-ActiveSelectionSet acDoc))
(vlax-for itm ss
      (setq RawList (append RawList (list (cons itm (vla-get-Handle itm)))))
  )
(setq NewList (vl-sort RawList (function (lambda (E1 E2) (< (cdr E1) (cdr E2))))))

(setq acsel (vla-add
      (vla-get-selectionsets
(vla-get-activedocument (vlax-get-acad-object))
)
      "MyName"
      )
      )
;set the counter to zero
(setq ctr 0)
;count the number of objects and loop
(repeat (vla-get-count ss)
  ;retrieve each object
  (setq item (car (nth ctr NewList)))

  ;???
  (vla-AddItems (car (nth ctr NewList)) acsel)
  ;increment the counter
  (setq ctr (1+ ctr))
  );repeat

; Nach run der Funktion
(vla-delete acsel)


------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 04. Dez. 2013 11:37    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 cadplayer 10 Unities + Antwort hilfreich

packe die Objekte erst in einen Array, diesen fügst du dann dem vlSelSet hinzu.

vlax-make-safearray
vlax-safearray-put-element
(vla-AddItems acsel ssa)

Damit wird Google wieder dein Freund 

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 06. Dez. 2013 15:47    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

Danke - mir fehlt nur das entspr. handling. Hänge daran fest. Versteh nicht ganz was der array für eine Funktion ausführt. Deshalb habe ich blind hier einfach ein paar Zeilen zusammengehauen, ohne ...
Code:
(setq acsel (vla-add
  (vla-get-selectionsets
    (vla-get-activedocument (vlax-get-acad-object))
    )
  "MyName"
  )
    )
    (setq ctr 0)
    (setq ssl (vla-get-count ss))
    (setq newArray (vlax-make-safearray vlax-vbObject (cons 0 (1- ssl)))
  n 0
    )
    (while (< ctr ssl)
      (setq item (car (nth ctr NewList)))
      (vlax-safearray-put-element newArray n item)
      (setq ctr (1+ ctr))
      )

Was fehlt meinem vlSelSet, damit er auch gefüllt wird?

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 06. Dez. 2013 17:07    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 cadplayer 10 Unities + Antwort hilfreich

Ohne es wirklich zu prüfen, viel leicht das 3.Schlagwort ?

Ich sehe zumindest in deinem Post nicht wo du den Array dem vlSelSet übergibst.
Einarray macht übrigens nichts, das ist im www aber sicher ausführlicher beschrieben, daher halte ich mich mal zurück.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 07. Dez. 2013 17:01    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

Die Frage war eben das, wie kann man einen array an den ss übergeben? Auf afraLISP gibt es jede Menge infos, nur wird bei der selection immer "onScreen" ausgewiesen. Gibt es da noch eine andere Möglichkeit. Da meine Objekte ja nun mal schon ausgewählt wurden, entsprechend ID sortiert und jetzt an den neuen ss übergeben werden sollen. Ist mit der array collection eine eigenützige ActiveX ss gemeint. Oder zu was braucht man den überhaupt. Vllt sollte die Frage ersteinmal geklärt werden.
Danke!

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 07. Dez. 2013 19:42    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 cadplayer 10 Unities + Antwort hilfreich

Du bist unglaublich.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 07. Dez. 2013 20: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Mir ist die Arbeitsweise mit vla-objekten unbekannt. Ich möchte erreichen, dass die gewählten Objekte (Schraffuren) nach der Erstellungszeit (Objekthandle) sortiert werden und der vla-ss neu erzeugt wird.

Wozu brauchst Du den Auswahlsatz als VLA-SS?

Die Entities in einem beliebigen Auswahlsatz nach Handle zu sortieren ist eine extrem triviale Sache. Was willst Du damit dann machen?

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 08. Dez. 2013 10:28    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

Danke, weiss nicht was gemeint ist mit "unglaublich", ist i.d.F auch egal.
...
Ich wollte halt mal einen anderen Weg gehen, mir scheint es aber auch eher sehr aufwendig zu sein mit vla-ss zu arbeiten. Vom Prinzip her wollte ich die Schraffuren, die ich über ssget einnsammle gleich direkt an
Code:
(strcat field "%<\\AcObjProp Object(%<\\_ObjId " (_objectid obj) ">%).Area>% + ")

übergeben, um die Textfields zu den Schraffur-flächen-grössen zu generieren.
Der ganze Sinn der Sache ist. Mit den Flächen möchte ich Volumen für Erdarbeiten ermitteln. Mit ssget sammle ich alle ein, mit der Sortfunktion ordne ich sie entsprechend der Erstellungszeit. Ein distanceFaktor zwischen den Schraffuren gibt mir die jeweiligen Volumen zu den Schraffuren aus.
Da die Ausgabe der Schraffuren in Stationsrichtung der einzelnen Querprofile erzeugt wurden, lässt sich dadurch die Einzelauswahl aller Schraffurn zur Volumenberechnung vermeiden (Auswahl mit Fenster möglich).

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 08. Dez. 2013 12:35    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 cadplayer 10 Unities + Antwort hilfreich

"gleich direkt" .. du übergibst das Objekt doch auch erst wieder einer anderen Funktion (_objectid),
wenn diese mit ename nichts anfangen kann, dann überarbeite sie dahingehend das sie es kann.
So sollte es egal sein pb du VLA-OBJECT oder ENAME übergibst um die ObjectID zu ermitteln.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Dez. 2013 08:53    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

Ich bin davon ausgegangen, dass die ObjectID verantwortlich für die Erstellungszeit des Objektes. Ist sie aber nicht, wie ich jetzt festgestellt habe.

Zu meinem Vorgang, ich habe Schraffuren (eine nach der anderen) erzeugt bei denen ich mittels field die Flächengrössen ausgebe, diese dann weite zur Volumenermittlung hergenommen werden.

Wähle ich die Schraffuren einzeln in meine sset, dann erhalte ich ein korrektes Ergebnis. Wähle ich aber alle mit einmal, ist das Ergebnis falsch, weil die Reihenfolge der Objekte im sset falsch ist.

Um einmal, die Objekt zu sortieren und in einen vla-sset zu legen habe ich nach langerer Prozedur (vorhergehend) folgende Funktion erstellt

Code:
(defun sort-ss-VlaObjectID (ss)

;;;    (ssget '((0 . "HATCH")))

    ; Erstellt ein vla-sset von gewählten Objekten
    (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
    (setq ss (vla-get-ActiveSelectionSet acDoc))

    ; Erstellt ein DXF-sset Sortierung
    (setq NewSs (ssadd))

    ; Speichert die ObjectID in die Rohdatenliste
    (vlax-for itm ss
      (setq RawList (append RawList (list (cons itm (vla-get-Handle itm)))))
    )

    ; Sortiert die Rohdaten nach ObjectID
    (setq NewList (vl-sort RawList (function (lambda (E1 E2) (< (cdr E1) (cdr E2))))))

    ; Löscht den vla-sset
    (vla-delete ss)

    ; Erstellt einen neuen vla-sset
    (setq acsel (vla-add
  (vla-get-selectionsets
    (vla-get-activedocument (vlax-get-acad-object))
    )
  "MyName"
  )
    )
    ; Speichert die geordneteten Objekte in den vla-sset
    (foreach item NewList
      (vlax-invoke acsel 'additems (list (car item)))
    )

  acsel
  )


Poblem 1)
Sortierung nach Erstellungszeit der Schraffur

Problem 2)
Der vla-sset "acsel" soll nach Gebrauch wieder gelöscht werden, damit er bei wdh. Aufruf der Funktion nicht existiert

Code:
(vla-delete acsel)

löscht in dem Falle nicht korrekt, weil nach Inspektion er immernoch vorhanden ist.

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 09. Dez. 2013 11:22    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Ich bin davon ausgegangen, dass die ObjectID verantwortlich für die Erstellungszeit des Objektes. Ist sie aber nicht, wie ich jetzt festgestellt habe.

Das kann sie logischerweise nicht sein, weil Du ja schließlich eine DWG in einer andere übernehmen kannst.

Mir erschließt sich immer noch nicht der Sinn Deines Vorgehens. Irgenwie scheint Dein Ziel zu sein, eine möglichst komplizierte Vorgehensweise realisieren zu wollen.

Du bist in Lisp. Da empfiehlt es sich, ausnahmslos mit Listen von Entities anstatt mit PickSets zu arbeiten. Picksets haben in Lisp zahlreiche unerwünschte Seiteneffekte, während Du auf Listen all die schönen Lisp-Funktionen für Listen anwenden kannst.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Dez. 2013 15: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

Nein, ich will die Funktion verbessern, indem man nicht einzeln die Schraffuren wählen muss, sondern gleich als Gesamtauswahl. Da war jetzt meine Frage: wie kann ich die Schraffuren ordnen. Da die weitere Berechnung im Sinne der Arbeitsweise, wann die Schraffuren erzeugt wurden, ermittelt werden soll.
Klingt kompliziert, is es aber nicht, da ich eben nur nach Zutat ordnen nach was, fragen will.

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 09. Dez. 2013 15:10    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Nein, ich will die Funktion verbessern, indem man nicht einzeln die Schraffuren wählen muss, sondern gleich als Gesamtauswahl.

Dazu ist das VLA-SSET völlig unnötig.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Dez. 2013 15: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

frage nicht gelesen oder nicht verstanden?
wie ordnet man items im sset nach erstellungsreihefolge?

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 09. Dez. 2013 15: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
frage nicht gelesen oder nicht verstanden?
wie ordnet man items im sset nach erstellungsreihefolge?


1. Du hast keine Kontrolle darüber, wie ein PickSet aufgebaut ist. Du kannst aber eine Liste von Entities nach allen Kriterien sortieren, die Du aus den Entity-Daten heraus lesen kannst. Ich arbeite u.a. deshalb immer mit Listen von Entities anstelle von PickSets.

2. Das Erstellungsdatum wird normalerweise nicht im Entity gespeichert, also kannst Du nicht danach sortieren.

3. Du kannst beispielsweise unter AppName "DATUM" das Erstellungsdatum am Entity speichern. Dann kannst Du die Entities, die unter Deiner Kontrolle erzeugt wurden, auch danach sortieren.

Ergänzung: Du kannst die ganze Datenbank von vorne bis hinten durchlaufen. Darin sollten die Elemente in der Reihenfolge ihrer Erzeugung stehen. Der Auswahlsatz (ssget "X") ist meines Wissens in AutoCAD nach Entstehung sortiert, in BricsCAD aber ist er in anderer Reihenfolge.

[Diese Nachricht wurde von archtools am 09. Dez. 2013 editiert.]

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 09. Dez. 2013 16:00    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 cadplayer 10 Unities + Antwort hilfreich

Antwort1: Gar nicht
Antwort2: Man erstellt einen (neuen) Auswahlsatz mit den Objekten in gewünschter Reihenfolge (das was du umgesetzt hast)
Antwort3: Da du aber für dein weiteres Vorgehen gar keinen Auswahlsatz benötigst,
hat Tom geschrieben... das du das nicht benötigst <recht treffend also>.

Du hast eine Liste von Objekten (handle, ename oder vla-object ist ja Wurscht),
mit der Liste kannst du weiterarbeiten.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 09. Dez. 2013 17:41    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 cadplayer 10 Unities + Antwort hilfreich

hallo cadplayer,
ich wuerde ueber den handle-wert sortieren, da dieser fortlaufend vergeben wird.
also liste erzeugen, in welcher alle handle-namen eingetragen sind und sortieren.

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 09. Dez. 2013 18:04    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 cadplayer 10 Unities + Antwort hilfreich

..macht er doch schon längst, die Sortierung ist fertig.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 10. Dez. 2013 10:44    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

Danke ersteinmal für eure Vorschläge, die allesamt sehr hilfreich für mich waren.
Die Sortierung nach Handle scheint mir auch die bessere Variante zu sein. Für mein Hauptproblem eine Funktion zu finden einen vla-Auswahlsatz zu bauen, habe ich folgende Funktion erweitert nach meinen Wünschen. Da ich gezwungen bin mit einem vla-sset zu arbeiten und nicht nachfolgende Funktionen im Programm umschreiben wollte.

Diese Funktion macht einem  das Leben leichter vla-sset aus dxf-sset zu erstellen

Code:
(defun DXF-SS->VLA-SS (SSET SSNAM / CNT EOBJ NEWSS SAFE SSET SSLST SSOBJ)
    (setq CNT  0
  SSOBJ (vla-get-selectionsets
  (vla-get-activedocument
    (vlax-get-acad-object)
    )
  )
  )
    (if (vl-catch-all-error-p
  (vl-catch-all-apply
    '(lambda (X)  (setq NEWSS (vla-add X SSNAM))) (list SSOBJ)
    )
  )
      (progn
(vla-delete (vla-item SSOBJ SSNAM))
(setq NEWSS (vla-add  SSOBJ SSNAM))
)
      )
    (if SSET
      (progn
(setq SAFE (vlax-make-safearray vlax-vbObject (cons 0 (- (sslength SSET) 1))))
(repeat (sslength SSET)
  (setq EOBJ (vlax-ename->vla-object
      (ssname SSET CNT)
      )
CNT  (1+ CNT)
)
  (setq SSLST (cons EOBJ SSLST))
  )
(vlax-safearray-fill SAFE SSLST)
(vla-additems NEWSS (variant SAFE))
)
      )
    NEWSS
    )

[Diese Nachricht wurde von cadplayer am 10. Dez. 2013 editiert.]

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