| |
| 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: Texte einfügen (1797 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 18. Mai. 2011 13:05 <-- editieren / zitieren --> Unities abgeben:
; ausgeben von Längen (defun c:ST (/ #SS #Len) (vl-load-com) (princ "\nSelect Arc, Line, LWPolyline object(s) to calculate total length: ") (cond ((setq #SS (ssget '((0 . "ARC,LINE,LWPOLYLINE")))) (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object)))) (setq #Len 0.) (vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*)) (cond ((eq (vla-get-objectname x) "AcDbArc") (setq #Len (+ #Len (vla-get-ArcLength x))) ) ((vl-position (vla-get-objectname x) '("AcDbLine" "AcDbPolyline")) (setq #Len (+ #Len (vla-get-Length x))) ) ) ;_ cond ) ;_ vlax-for (vla-delete #SS) (alert (strcat "Total Length: " (setvar 'users5 (rtos #Len)) ) ;_ strcat ) ;_ alert ) ) ;_ cond (princ) (setq PKT (cdr(assoc 10 #SS))) (command "text" PKT "0.375" "" #Len ) ) ;_ defun irgenwie funktioniert das nicht so, wie muss es richtig lauten das alle gewählten Objekte mit einem Text versehen werden? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 18. Mai. 2011 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
hi, du musst die Textausgabe in die Schleife packen wenn du jedes Element mit Text versehen möchtest. Und du fragst derzeit den gc von etwas ab, dass du zuvor gelöscht hast, was außerdem ein selection set ist und kein einzelnes entity. EDIT: was zudem ein vla-object ist... oh-man(n) ... Im Notfall mit getpoint den Absetzpunkt neu erfragen... die Zeilen sehen nach c&p aus ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 18. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 18. Mai. 2011 13:31 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 18. Mai. 2011 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
vlax-vla-object->ename wandelt dein vla-objekt in ein "herkömmliches" Objekt um... dann kannst du mit deinen Zeilen weitermachen und diese in der Schleife einbauen... EDIT: gc10 ist beim Bogen der Kreismittelpunkt... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 18. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 18. Mai. 2011 15:37 <-- editieren / zitieren --> Unities abgeben:
Meinst Du so... (vl-load-com) (princ "\nSelect Arc, Line, LWPolyline object(s) to calculate total length: ") (cond ((setq SS (ssget '((0 . "ARC,LINE,LWPOLYLINE")))) (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object)))) (setq ELE 0.) (vlax-for x (setq SS (vla-get-activeselectionset *AcadDoc*)) (cond ((eq (vla-get-objectname x) "AcDbArc") (setq ELE (+ ELE (vla-get-ArcLength x))) ) ((vl-position (vla-get-objectname x) '("AcDbLine" "AcDbPolyline")) (setq ELE (+ ELE (vla-get-Length x))) (setq PKT (vlax-vla-object->ename SS)) ) ) ;_ cond ) ;_ vlax-for ;;; (vla-delete SS) (alert (strcat "Total Length: " (setvar 'users5 (rtos ELE)) ) ;_ strcat ) ;_ alert ) ) ;_ cond (princ) (command "text" PKT "" "" ELE ) ) ;_ defun Nebenbei gefragt: gibt es den AutoLispGuide auch auf Deutsch http://www.kxcad.net/autodesk/autocad/AutoLISP_Reference_Guide/WSfacf1429558a55de1a7524c1004e616f8b-5913.htm [Diese Nachricht wurde von cadplayer am 18. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 18. Mai. 2011 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
nein... in der (vlax-for x... Schleife (am Ende der Schleife) das vla-objekt mittels vlax-vla-object->ename wandeln und deine Zeilen (setq PKT (cdr(assoc 10 #SS)))(command "text" PKT "0.375" "" #Len ) entsprechend einpassen... oder besser die gewünschten Infos vom vla-objekt abfragen und den text mit vla-addtext einfügen
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 19. Mai. 2011 08:07 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 19. Mai. 2011 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
#ss ist bei dir ein selection set vlax-for x ist die Schleife, x ist dein vla-object EDIT: x ist ein bzw. sind die Objekte des selection sets, welche nacheinander einzeln angesprochen werden... wenn du mit den gc arbeiten möchtest brauchst du das "klassische" Objekt, welches du mit (vlax-vla-object->ename x) innerhalb der Schleife erhälts wenn du dies hast, kannst du es weiter verwurschten... nun kannst du dir überlegen, wo innerhalb der vlax-for-schleife du es einbaust ggf in der cond-schleife innerhalb der vlax-for-schleife oder nach der cond-schleife aber noch innerhalb der vlax-for-schleife... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 19. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 19. Mai. 2011 09:01 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
achso assoc verlangt nach einer Liste also --> (entget(vlax-vla-object->ename x)) so nu aber - Ergebnisse!
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 19. Mai. 2011 10:17 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 19. Mai. 2011 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 19. Mai. 2011 10:42 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 19. Mai. 2011 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
@cadplay bis zum mittag?! na so kompliziert ist es doch nicht?! quick and dirty
Code: (vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*)) (cond ((eq (vla-get-objectname x) "AcDbArc") (setq #Len (+ #Len (vla-get-ArcLength x))) (setq PKT (cdr(assoc 10 (entget(vlax-vla-object->ename x))))) (command "text" PKT "0.375" "" #Len ) ) ((vl-position (vla-get-objectname x) '("AcDbLine" "AcDbPolyline")) (setq #Len (+ #Len (vla-get-Length x))) (setq PKT (cdr(assoc 10 (entget(vlax-vla-object->ename x))))) (command "text" PKT "0.375" "" #Len ) ) ) ;_ cond
so? ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 19. Mai. 2011 13:15 <-- editieren / zitieren --> Unities abgeben:
Danke rein theoretisch ist das korrekt... Nur mein Problem ist, dass nicht die richtigen Werte an die gew. Objekte geschrieben wird, sondern immer die Schnittsumme, da ja in der Schleife (setq #Len (+ #Len (vla-get-Length x))) immer der nächste Wert dazuaddiert wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 19. Mai. 2011 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
na und nu aber... das solltest du doch selber ändern (command "text" PKT "0.375" "" (vla-get-ArcLength x))
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 19. Mai. 2011 14:29 <-- editieren / zitieren --> Unities abgeben:
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 19. Mai. 2011 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 19. Mai. 2011 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
vlide-Hilfe Reiter Inhalt ActiveX and VBA Reference ... was das Herz begehrt sonst? www? Suchmaschine... Für Eigenschaften und Methoden am Objekt --> (vlax-dump-object (vlax-ename->vla-object(car(entsel))) 'T) Edit: stopfe mal in eine Suchmaschine "Visual LISP Functions reference" sollte ne pdf recht weit oben kommen... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 19. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 19. Mai. 2011 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 19. Mai. 2011 16:59 <-- editieren / zitieren --> Unities abgeben:
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 19. Mai. 2011 17:26 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 19. Mai. 2011 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mai. 2011 08:21 <-- editieren / zitieren --> Unities abgeben:
ja das funktioniert wenn ich eingebe (setq PKT (vlax-curve-getStartPoint(vlax-ename->vla-object (car(entsel))))) warum gehts nicht in der Schleife mit der Variable x? (vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*)) (cond ((eq (vla-get-objectname x) "AcDbArc") (setq #Len (+ #Len (vla-get-ArcLength x))) (setq PKT (vlax-curve-getStartPoint(vlax-ename->vla-object x))) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Mai. 2011 08:33 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo cadplayer, Zitat: Original erstellt von cadplayer: Kannst du mir vielleicht einen Tip geben, wo ich alle VLISP-funktionen sehen kann.
ich schreibe einen Teil (z.B. vla in eine Lsip-Datei) und markiere den Text. Danach klicke ich auf "AufSymbolsatz ergäzen". Im neuen Fenser die gewünschte Funktion wählne und auf Hilfe klicken. IN der Anlage sind noch Bilder dazu. Viele Grüße Bernd
[Diese Nachricht wurde von Bernd10 am 20. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Mai. 2011 08:37 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Edit: du hast versucht ein vla-objekt zu vla-objekt zuwandeln - da steigt er sicherlich aus... das wird teuer... grins Code: (vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*)) (cond ((eq (vla-get-objectname x) "AcDbArc") (setq #Len (+ #Len (vla-get-ArcLength x))) (command "text" (vlax-curve-getStartPoint x) "0.375" "" (vla-get-ArcLength x)) ) ((vl-position (vla-get-objectname x) '("AcDbLine" "AcDbPolyline")) (setq #Len (+ #Len (vla-get-Length x))) (command "text" (vlax-curve-getStartPoint x) "0.375" "" (vla-get-Length x)) ) ) ;_ cond ) ;_ vlax-for
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 20. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mai. 2011 08:54 <-- editieren / zitieren --> Unities abgeben:
@Bernd: super danke für den Tip @Dorfy: danke für die grosszügige Hilfe Vlisp ist mir noch eine Nummer zu gross - man muss sehr viele Funktionen im Kopf haben. Bis man die alle durchgespielt hat vergehen wahrscheinlich Monate Das Grundprinzip finde ich aber sehr logisch und nachvollziehbar. Toll das ihr mir so hilfreich seid. (rtos (vlax-curve-getStartPoint x) 2 2) ist vermutlich quatsch, wenn ich nur 2 Nachkommastllen haben will? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Mai. 2011 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: [B(rtos (vlax-curve-getStartPoint x) 2 2) ist vermutlich quatsch, wenn ich nur 2 Nachkommastllen haben will?[/B]
naja fast - du willst doch die Länge mit zwei Nachkommastellen und nicht den Einfügepunkt - sonst passt es schon ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mai. 2011 09:33 <-- editieren / zitieren --> Unities abgeben:
|