| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Kompetent und Kostenlos (2218 mal gelesen)
|
Harald Beiter Mitglied Konstrukteur (Techniker)
Beiträge: 121 Registriert: 19.11.2002 P4 3GHZ 1 GB RAM Quadro FX 3000 256 MB Autocad Mechanical 6 PP Sp4
|
erstellt am: 10. Nov. 2004 15:00 <-- editieren / zitieren --> Unities abgeben:
@ Cadwiesel, da ich sah, das Du aktiv bist: -habe nach der CAT/PRO die vorgenannte CD hier im Haus aktiviert und soeben vom Vertrieb folgende Mitteilung bekommen: -das Lisp Programm "gesla" funktioniert nicht! Nach Prüfung muß ich denen recht geben (ungern!). Haben einen Kettenzug dargestellt als Polylinie mit "gesla" berechnen lassen und sicherheitshalber auch mit "länge". =zwei unterschiedliche Ergebnisse! Nach zerlegen der Polylinie in zwei aneinandergereihte Polylinien funkitionierte "gesla" einwandfrei (d.h., die beiden Teile wurden mit richtigen Maß erkannt). Was liegt hier für ein Fehler vor? Gruß Harald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 10. Nov. 2004 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Beiter
Ich kann leider auch diese Verhalten bestätigen. Bei einer Polylinie mit z.B. diesen Stützpunkten (10 100.0 100.0) (10 200.0 100.0) (10 270.711 29.2893) (10 270.711 -70.7107) (10 170.711 -70.7107) (10 100.0 0.0) liefert mir gesla die Gesamtlänge von 0 (Null) Eigentlich müsste ca. 714.42 rauskommen. Anscheinend wird bei geschlossenen Polylinienkonturen (eine Polylinie) der Umfang auf Null gesetzt. ------------------ "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 10. Nov. 2004 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Beiter
|
Harald Beiter Mitglied Konstrukteur (Techniker)
Beiträge: 121 Registriert: 19.11.2002 P4 3GHZ 1 GB RAM Quadro FX 3000 256 MB Autocad Mechanical 6 PP Sp4
|
erstellt am: 10. Nov. 2004 16:04 <-- editieren / zitieren --> Unities abgeben:
Hi Cadwiesel, die auf der Messe erhaltene CD "kompetent und kostenlos" hat das "gesla" lisp drauf. Bei meiner ACAD 2002 MDT6 PP funktioniert serienmäßig der Befehl "länge". Und diese beiden sollten eigentlich gleiche Ergebnisse liefern. Wie im 1. Beitrag geschrieben jedoch nicht. Gruß Harald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 10. Nov. 2004 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Beiter
:hmm ich kann das nicht Nachvollziehen länge gibt dir ja nur ein Objekt aus. Es muss also per lisp auch nur ein Objekt gewählt worden sein. Vielleicht hannst du mir mal ein Beispiel zeigen. @Proxy an deinem Beispiel scheint ein Fehler su haften. für deine Polylinie bekomme ich einen Wert von 500.00049 mit jedem Programm raus. edit: ich habe mir das lisp mal angesehen. Es fehlt in der Tat ein wichtiger Teil, in dem Lisp, denn geschlossene Polylinien werden mit noll berechnet. hier mal das lisp, was ich habe:
Code:
(defun C:gesla (/ ss T_2 lang) (vl-load-com) (setq Ss nil t_2 nil lang 0 ) ;_ end of setq (prompt "\nObjekte zur längenermittlung wählen: ") (setq Ss (ssget '((-4 . "<OR") (0 . "LWPOLYLINE") (0 . "POLYLINE") (0 . "LINE") (0 . "CIRCLE") (0 . "ELLIPSE") (0 . "SPLINE") (0 . "ARC") (-4 . "OR>") ) ) ;_ end of ssget ) ;_ end of setq (if (not Ss) (princ (strcat "\nNichts gewählt.")) (progn (while (setq t_2 (ssname Ss 0)) (cond ((=(cdr(assoc 0(entget t_2)))"CIRCLE") (setq lang (+ lang (* pi(* 2(cdr(assoc 40(entget t_2))))))) ) ((=(cdr(assoc 0(entget t_2)))"ELLIPSE") (command "_area" "o" t_2 "") (setq lang (+ lang (getvar "perimeter"))) ) ((wcmatch(cdr(assoc 0(entget t_2)))"*POLYLINE") (command "_area" "o" t_2 ) (setq lang (+ lang (getvar "perimeter"))) ) (t (setq lang (+ lang (vlax-curve-getDistAtPoint (vlax-ename->vla-object t_2) (vlax-curve-getendPoint t_2) ) ;_ end of vlax-curve-getDistAtPoint ) ;_ end of + ) ;_ end of setq ) ) (setq Ss (ssdel t_2 Ss)) ) ;while (princ (strcat "\n*****Gesamtlänge: " (rtos lang 2 5)) ) ;_ end of princ (terpri) ) ;endprogn ) ;endif (princ) ) ;defun (prompt "\nStarten mit 'gesla' ")
------------------ Gruß CADwieselBesucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harald Beiter Mitglied Konstrukteur (Techniker)
Beiträge: 121 Registriert: 19.11.2002 P4 3GHZ 1 GB RAM Quadro FX 3000 256 MB Autocad Mechanical 6 PP Sp4
|
erstellt am: 10. Nov. 2004 16:29 <-- editieren / zitieren --> Unities abgeben:
|
Harald Beiter Mitglied Konstrukteur (Techniker)
Beiträge: 121 Registriert: 19.11.2002 P4 3GHZ 1 GB RAM Quadro FX 3000 256 MB Autocad Mechanical 6 PP Sp4
|
erstellt am: 11. Nov. 2004 08:39 <-- editieren / zitieren --> Unities abgeben:
`n Morgen cadwiesel, irgendwie krieg ich´s nicht auf die reihe. Dein gestriges geändertes Lisp kopiert und mittels einfügen über den vorhandenen (markierten) abgespeicherten Lisp-text von der CD gelegt. Im ACAD aus den geladenen entfernt und nach Neustart acad das nun geänderte geladen. Ergebnis: nach Eingabe von gesla sagt mir ACAD unbekannter Befehl! Was mache ich falsch? Ggruß Harald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 11. Nov. 2004 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Harald Beiter
alles zwischen den Zeilen kopieren von (defun c:.... bis (prompt "starten.... in eine leere asciidatei einfügen. Diese speichern als meinetwegen gesla.lsp . die datei in acad laden und dann ausführen mit gesla
------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |