Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block -> Ursprung -> in Auswahlsatz.... aber wie?!

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:  Block -> Ursprung -> in Auswahlsatz.... aber wie?! (786 mal gelesen)
Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

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

Hy Forum!
Ich hab da eine Frage... muss dazusagen das ich mich erst seit ein paar wochen mit lisp beschäftige.
Also ich möchte innerhalb einer Lisp-routine einen Block od. 3D-Polylinie auflösen und die Objekte die entstehen weiterbearbeiten.

Mein Gedankengang wäre: Ich stell mich mit (setq en (entlast)) auf den letzten Eintrag in der Zeichnung. Dann löse ich mit Ursprung meinen vorher ausgewälten Block auf. Dann mit (setq en (entnext en)) so lange bis en gleich "nil" ist..... Ich hab im Moment keine Zeit das ich mir das durch-lisple - müsste aber so funktionieren. Ich will auch gar nicht das sich das jetzt jemand antut.
Ich wollte nur wissen ob mein Gedankengang richtig war oder ob ma das auch etwas leichter lösen kann.

------------------
mfg Siegfried Schachinger

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: 17. Dez. 2002 08: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 Nur für Schachinger 10 Unities + Antwort hilfreich

( @Holger-->bitte korregieren     )

Moin,
also wenn du den 3-Zeiler gerade mal eingetippt hättest
zum testen, so würdest du sehen das es SO nicht klappt.

(setq aws (entlast))
_explode
!aws
_copy
!aws
==> 0 gefunden...

was ich daher ableite, das dein zunächst gefundenes Objekt
( die Blockreferenz ) ja nicht mehr existiert !
funktionieren würde es allerdings mit (ssget "_p"); "_p"=vorher

dabei ist mir eines allerdings etwas rätselhaft:
Wenn du mit (entlast) an den gewünschten Block kommst,
und du ihn dann in Ursprung setzen möchtest, warum erstellst du
ihn dann überhaupt ? (ist das eine dwg ? -als Block eingefügt?)

Mich interessiert es nur so weil ich selbst erst, vor ein paar
Monate/Wochen , für ein paar Tage/Wochen mich mit Lisp beschäftigt
hatte...

ciao Sebastian

------------------
    Gruß Sebastian , Ffm
Der Feind des Guten ist das Bessere.

[Diese Nachricht wurde von cadffm am 17. Dezember 2002 editiert.]

[Diese Nachricht wurde von cadffm am 17. Dezember 2002 editiert.]

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 17. Dez. 2002 08: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

Hy Sebastian.

nein das ganze funktioniert etwsa anders. ich möchte entlang eines Pfades ein Rohr extrudieren. anbei mein bisheriger Code:

(defun c:ss2pipe2 ()
  (setq pickmode (getvar "pickstyle"))
  (setvar "pickstyle" 0)
  (command "-layer" "_m" "Rohrmitte-7-z" "_c" "5" farbenew "" "")
  (command "_ucs" "_world")
  (princ "\nObjekte wählen: ")
  (setq ss (ssget))
  (setq DN (getreal "\nRohrdurchmesser: "))
  (setq indx -1)
  (repeat (sslength ss)
    (setq indx (1+ indx))
    (setq en (ssname ss indx))
    (setq en_0entity (cdr (assoc 0 (entget en))))
    (setq en_8entity (cdr (assoc 8 (entget en))))
    (if (= en_0entity "LINE")
      (progn
  (command "_ucs" "_world")
  (setq en_ap (cdr (assoc 10 (entget en))))
  (setq en_ep (cdr (assoc 11 (entget en))))
  (setq en_apx (car en_ap))
  (setq en_apy (cadr en_ap))
  (setq en_apz (caddr en_ap))
  (setq en_epx (car en_ep))
  (setq en_epy (cadr en_ep))
  (setq en_epz (caddr en_ep))
  (setq en_x (- en_epx en_apx))
  (setq en_y (- en_epy en_apy))
  (setq en_z (- en_epz en_apz))
  (setq en_xy (sqrt (+ (expt en_x 2) (expt en_y 2))))
  (setq angle_z (/ (* (angle (list en_apx en_apy 0.0) (list en_epx en_epy 0.0)) 180) PI))
  (setq angle_y (/ (* (angle (list 0.0 0.0 0.0) (list en_xy en_z 0.0)) 180) PI))
  (command "_ucs" "_m" en_ap "_ucs" "z" angle_z "_ucs" "y" (- 90 angle_y))
    (setq farbenew (cdr (assoc 62 (tblsearch "layer" en_8entity))))
  (command "-layer" "_m" (strcat en_8entity "-z") "_c" farbenew "" "")
  (command "_circle" (list 0.0 0.0 0.0) (/ DN 2.0))
  (command "_extrude" (entlast) "" "p" en)
  (command "_copy" en "" (list 0.0 0.0 0.0) (list 0.0 0.0 0.0))
  (command "_chprop" (entlast) "" "_la" "Rohrmitte-7-z" "")
  )
) ;end if
      (if (= en_0entity "ARC")
(progn
  (command "_ucs" "_obj" en)
  (setq en_rad (cdr (assoc 40 (entget en))))
  (command "_ucs" "_m" (list en_rad 0.0 0.0) "_ucs" "x" 90)
  (setq farbenew (cdr (assoc 62 (tblsearch "layer" en_8entity))))
  (command "-layer" "_m" (strcat en_8entity "-z") "_c" farbenew "" "")
  (command "_circle" (list 0.0 0.0 0.0) (/ DN 2.0))
  (command "_extrude" (entlast) "" "_p" en)
  (command "_copy" en "" (list 0.0 0.0 0.0) (list 0.0 0.0 0.0))
  (command "_chprop" (entlast) "" "_la" "Rohrmitte-7-z" "")
  )
);end if
      );end repeat
  (setvar "pickstyle" pickmode)
  (princ)
  )

(defun c:layer2pipe2 ()
  (setq pickmode (getvar "pickstyle"))
  (setvar "pickstyle" 0)
  (command "-layer" "_m" "Rohrmitte-7-z" "_c" "5" farbenew "" "")
  (command "_ucs" "_world")
  (while (not (setq obj (entsel "\nObjekt mit dem Rohr-Layer wählen: "))))
  (setq lrohr (cdr (assoc 8 (entget (car obj)))))
  (setq DN (getreal "\nRohrdurchmesser: "))
  (setq en (entnext))
  (while en
    (setq en_0entity (cdr (assoc 0 (entget en))))
    (setq en_8entity (cdr (assoc 8 (entget en))))
    (if (= en_8entity lrohr)
      (progn
      (if (= en_0entity "LINE")
        (progn
  (command "_ucs" "_world")
  (setq en_ap (cdr (assoc 10 (entget en))))
  (setq en_ep (cdr (assoc 11 (entget en))))
  (setq en_apx (car en_ap))
  (setq en_apy (cadr en_ap))
  (setq en_apz (caddr en_ap))
  (setq en_epx (car en_ep))
  (setq en_epy (cadr en_ep))
  (setq en_epz (caddr en_ep))
  (setq en_x (- en_epx en_apx))
  (setq en_y (- en_epy en_apy))
  (setq en_z (- en_epz en_apz))
  (setq en_xy (sqrt (+ (expt en_x 2) (expt en_y 2))))
  (setq angle_z (/ (* (angle (list en_apx en_apy 0.0) (list en_epx en_epy 0.0)) 180) PI))
  (setq angle_y (/ (* (angle (list 0.0 0.0 0.0) (list en_xy en_z 0.0)) 180) PI))
  (command "_ucs" "_m" en_ap "_ucs" "z" angle_z "_ucs" "y" (- 90 angle_y))
  (setq farbenew (cdr (assoc 62 (tblsearch "layer" en_8entity))))
  (command "-layer" "_m" (strcat en_8entity "-z") "_c" farbenew "" "")
  (command "_circle" (list 0.0 0.0 0.0) (/ DN 2.0))
  (command "_extrude" (entlast) "" "p" en)
  (command "_copy" en "" (list 0.0 0.0 0.0) (list 0.0 0.0 0.0))
  (command "_chprop" (entlast) "" "_la" "Rohrmitte-7-z" "")
  )
) ;end if
      (if (= en_0entity "ARC")
(progn
  (command "_ucs" "_obj" en)
  (setq en_rad (cdr (assoc 40 (entget en))))
  (command "_ucs" "_m" (list en_rad 0.0 0.0) "_ucs" "x" 90)
  (setq farbenew (cdr (assoc 62 (tblsearch "layer" en_8entity))))
  (command "-layer" "_m" (strcat en_8entity "-z") "_c" farbenew "" "")
  (command "_circle" (list 0.0 0.0 0.0) (/ DN 2.0))
  (command "_extrude" (entlast) "" "_p" en)
  (command "_copy" en "" (list 0.0 0.0 0.0) (list 0.0 0.0 0.0))
  (command "_chprop" (entlast) "" "_la" "Rohrmitte-7-z" "")
  )
);end if
      (if (= en_0entity "POLYLINE")
(progn
  (command "_copy" en "" (list 0.0 0.0 0.0) (list 0.0 0.0 0.0))
  (command "_explode" (entlast) "")
  )
);end if
      );end progn
      ) ;end if
    (setq en (entnext en))
    ) ;end while
  (setvar "pickstyle" pickmode)
  (princ)
  ) ;end defun


So das sind 2 Befehle.

mit "layer2pipe2" werden alle Bögen und Linien eines Layers mit dem vorher angegebenen Rohrduchmesser überzogen. Polylinien werden kopiert und aufgelöst (gehen ans Ende der Datenbank und werden am Schluss auch mit Rohr überzogen)

mit "ss2pipe2" ist das ganze mit einem Auswahlsatz realisiert.

jetzt hab ich aber das Problem wenn ich eine 3D-Polyline ausgewählt habe muss ich die beim Auflösen entstehenden Objekte ja irgendwie in einen Auswahlsatz oder ähnliches bekommen entlang von ihnen extrudieren zu können....

ist jetzt etwas klarer geworden was ich eigendlich gemeint habe?

------------------
mfg Siegfried Schachinger

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: 17. Dez. 2002 08: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 Schachinger 10 Unities + Antwort hilfreich

Ok, abgesehen von den wissenden hier (die noch nicht ausgeschlafen haben  ) :

das du die Objekte erhälst habe ich doch mit
ssget "_p"   schon beantwortet, ODER?

und zwei AwS(listen) zusammenführen...das kannst du ja.

Achso: Das war das erste auf was mich Brischke hinwies:

(setq <Vairable> <Wert>
      <Vairable> <Wert>
      <Vairable> <Wert>
      <Vairable> <Wert>
);setq-Ende

man kann sich also das mehrfache schreiben von setq sparen !


--------------------
abgesehen davon (wäre für MICH allerdings noch zuviel des Guten)
kannst du dir ja Entity´s erstellen mit den Werten der im
Block enthaltenen Objekte...herauslesen und als eigenschaft einer neuen Linie etc. nehmen

------------------
  Gruß Sebastian , Ffm
Der Feind des Guten ist das Bessere.

[Diese Nachricht wurde von cadffm am 17. Dezember 2002 editiert.]

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 17. Dez. 2002 08: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

schwupps.... da hab ich drübergelesen - sorry!
das die lösung soooooo einfach ist hätt ich nicht geglaubt *g*

das kommt davon wenn man alles was man über lisp weis nur aus dem acad-hilfe hat *g* bzw. dank des forums doch etwas wächst :-)

------------------
mfg Siegfried Schachinger

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

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

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 17. Dez. 2002 08:58    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 Schachinger 10 Unities + Antwort hilfreich

Hallo Siegfried,
Hallo Sebastian,

ich gehöre jetzt auch zu denen, die bereits ausgeschlafen haben (mußten).
Habe gerade mal Dein Programm getestet. Wenn ich das richtig sehe, dann möchtest du doch einen Kreis entlang eines Pfades extrudieren.
Warum extrudierst Du nicht einer 3D-Polylinie?
Anbei ein Programmansatz, mit dem du einen Kreis erzeugen und diesen dann auch entlang eines Pfades extrudieren kannst. Aber Achtung: es ist keine Logik drinnen, wo und in welcher ebene der Kreis gezeichnet wird. Diese Logik hast du ja bereits in deinem Code drinnen, kannst diese also übernehmen.
Wenn Du noch Fragen hast ...

Grüße Holger

Code:

(defun c  test ()
  (vl-load-com)
  (f:create_circle (list 0.0 0.0 0.0) (getreal "\nDurchmesser") "0")
  (f:create_EXTRUDE_PATH (entlast)(car(entsel)))
  )
(defun f:create_EXTRUDE_PATH (circel path / point)
  (setq point (vlax-make-safearray vlax-vbObject '(0 . 0)))
  (vlax-safearray-put-element point 0 (vlax-ename->vla-object circel))
  (setq reg (vlax-invoke-method
      (ModelSpace)
      'addregion
      point
      )
)
  (vlax-invoke-method
    (ModelSpace)
    'AddExtrudedSolidAlongPath
    (vlax-ename->vla-object (entlast))
    (vlax-ename->vla-object path)
    )
  )
(defun f:create_circle (ccmpt ccdrm lanam / )
  (entmake (list
     '(0 . "CIRCLE")
     '(100 . "AcDbEntity")
     '(67 . 0)
     '(410 . "Model")
     (cons 8  lanam)
     '(100 . "AcDbCircle")
     (cons 10 ccmpt)
     (cons 40 (/ ccdrm 2.0))
     '(210 0.0 0.0 1.0)
     )
   )
  )
(defun ModelSpace ()
  (vlax-get-property
    (drawing)
    'ModelSpace
    )
  )
(defun drawing ()
  (vlax-get-property
    (vlax-get-acad-object)
    "ActiveDocument"
    )
  )


Hatte ich vergessen: Zum testen einfach eine 3DPolylinie im Punkt 0,0,0 in Richtung 0,0,100 beginnend, zeichnen. Dann wird ein Kreis gezeichnet und auch entlang dieses Polylinie extrudiert.
Die Extrusion kann auch entlang von Splines, Bögen, Ellypsen und Kreisen erfolgen.
------------------
Holger Brischke
CADlon - Lisp over night

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: 17. Dez. 2002 09:18    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 Schachinger 10 Unities + Antwort hilfreich

@siegfried
du hast in deiner Aufzählung die Wichtigste Hilfe
vergessen, das Tutorial von mapcar, will hoffen das du da schon
gewesen bist  ...  ich habe es dort nicht lange ausgehalten
weil ich lieber mit Büchern und vorhandenen Codes arbeite, aber
das Tutorial ist spitze (Auch wenn der Aufbau fragwürdig ist).
ciao

------------------
Gruß Sebastian , Ffm
Der Feind des Guten ist das Bessere.

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 17. Dez. 2002 09: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

@brischke
das klingt verdammt interessant! werd ich mir sobald ich zeit habe zu gemüte führen! (wird wohl wieder der samstag sein *G*)... ja das ganze soll ein kleines tool für unsere rohrleitungsplanung sein. denn Hydraulik-Leitungen werden ja normalerweise bei 1:20 im 1Strichsystem dargestellt und bei uns im Büro wird jede Leitung auf einen eigenen Layer gezeichnet um sich in komplexen Zeichnungen noch zurecht zu finden. Zum Darstellen und Visualisieren sind solche 1Strichmodelle aber unbrauchbar -> daher hab ich das so gelöst derzeit.

@cadffm http://home.netcom.com/%7Erogh/autolisp/
das is da forum mit dem ich begonnen habe (vor 2-3 wochen *g*) hat mir viel geholfen auch wenns "nur" in englisch ist...

------------------
mfg Siegfried Schachinger

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 18. Dez. 2002 15:55    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 Schachinger 10 Unities + Antwort hilfreich

Hi Leute,

ich will mich hier gar nicht zu der Extrusionsgeschichte auslassen, sondern nur mal wieder zu der eigentlichen Frage nach dem Auswahlsatz usw.

Der Gedankengang war schon völlig OK. Was mich aber immer wieder erstaunt, das ist die Beharrlichkeit, mit der Alle das Rad immer wieder neu erfinden. Das mit der 'Modularität' scheint wohl in diesem Jahrtausend auch keinen Einzug mehr zu halten bei den AutoLisplern. Aber das war ja im vorigen Jahrtausend auch schon so;-)

Eine kleine Zeile an der entscheidenden Stelle einfügen:

(setq markierung(entlast))

Dann _insert, _explode und weissderteufelwas

Und dann:

(ss-nach-markierung(markierung)) => gibt Auswahlsatz zurück

Und so implementiert man die Funktion:

(defun ss-nach-markierung(ent / ss)
  (setq ss(ssadd))
  (while(setq ent(entnext ent))
    (if
      (not(member(cdr(assoc 0 ent))'("ATTRIB""SEQEND""VERTEX")))     
      (ssadd ent ss)
    )
  )
  ss
)

Das Ausfiltern der Sub-Entities ist deshalb wichtig, damit man sie nicht gleichberechtigt mit den Hauptentities im Auswahlsatz hat. Wenn man sich so eine Routine mal geschrieben hat, dann sollte man sie irgendwo ablegen und nur noch benutzen, das schont einfach Zeit und Nerven - das meine ich mit Modularität.

Wo die allerdings völlig fehlt, ist dein Programmcode, Siegfried. Als
Neuling ist das ja verzeihlich, aber mein Gemecker bleibt dir trotzdem nicht erspart: Diese Routine erzeugt zig globale Variablen, die überhaupt keiner braucht. Wahrscheinlich ist keines dieser ganzen setqs wirklich nötig. Eines aber, das echt nötig wäre, fehlt:

(setq nullpunkt '(0 0 0))

Die Strafarbeit (list 0 0 0) lässt du den Interpreter sehr oft machen! (setq ...) verwendet man dann, wenn auf einen Wert mehrfach zugegriffen werden soll - aber man sollte es vermeiden, wenn nur ein Zugriff erfolgt. Das Programm könnte also auf 1/4 des Volumens gekürzt werden (dann wäre es auch leserlich), dafür aber zehnmal so schnell laufen. Und wenn dann die notwendigen Variablen (höchstens 3 für diesen Zweck) auch noch lokal gemacht werden, könnte es sogar sicher und unfallfrei laufen.

Modular wäre es dann, wenn es den Vorgang auch noch auf einem anderen Layer ausführen könnte. Aber so brauchst du eine neue Routine, nur weil sich ein Layername ändert. Du kannst das Ganze auch nicht aus einer anderen Routine heraus aufrufen, weil die Benutzeranfragen (Input) und das Zeichnen (Output) völlig miteinander vermischt sind.

Also, nimm den ersten Teil als Bestätigung für die Richtigkeit deines Ansatzes, und den zweiten als gutgemeinte Ratschläge zur Verbesserung.

Und nun noch eine Frage @Sebastian: Was findest du denn fragwürdig am Aufbau?

Gruss, Axel

------------------
http://www.tutorial.autolisp.info

http://www.advanced.autolisp.info


http://www.activex.autolisp.info

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. Jan. 2003 12:16    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 Schachinger 10 Unities + Antwort hilfreich

Hi Axel,
damit meinte ich das man es (im Netz) schlecht als Nachschlagewerk
nutzen kann, denn wenn ich nochmal was über (zB) Testfunktionen nachlesen möchte , so fehlt mir der Bezug zu "Schwanger?" - wo man bei dir aber suchen müßte... Diese Titel der Links sind evtl insider und ich war nicht dabei  , aber es sind immernoch die besten deutschsprachigen "Lisp-Seiten" die ich kenne !!!SUPER!!!

------------------
Gruß Sebastian , Ffm
Der Feind des Guten ist das Bessere.

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

nahe
Ehrenmitglied



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

Beiträge: 1724
Registriert: 18.01.2001

erstellt am: 17. Jan. 2003 09:03    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 Schachinger 10 Unities + Antwort hilfreich

Hallo Siegfried

die wohl einfachste Lösung für Dein Problem sind die folgenden zwei Zeilen

(command "._EXPLODE" pause)
(setq as (ssget "_P"))

Dann hast Du die explodierten Blockelemente in "as" und kannst Dir die Schleifendurchläufe ersparen.

Grüße
Heinz

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