| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Lisp Zeichnungsabhängig ? (2854 mal gelesen)
|
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 16. Sep. 2014 15:58 <-- editieren / zitieren --> Unities abgeben:
Folgendes Problem, Unten aufgeführte Lisp funktioniert in der einen Zeichnung und in einer andern nicht. An was könnte dieses liegen ?
Code:
;; Korrigiert( rundet) die Scheitelpunkte eines Objekts auf die angegebene Kommastelle ;;(defun DT:ROUND2 (ZAHL BASIS / TEMP ) (if (and(numberp ZAHL) (=(numberp BASIS))(> BASIS 0)) (progn (setq TEMP (/ (abs ZAHL) BASIS)) (cond ( (> (- TEMP (fix TEMP)) 0.5) (setq TEMP (+ (fix TEMP) 1))) ( (< (- TEMP (fix TEMP)) 0.5) (setq TEMP (fix TEMP) )) ( (= (- TEMP (fix TEMP)) 0.5) (if (equal (/ (fix TEMP) 2.0) (fix(/ (fix TEMP) 2.0)) 0.001) (setq TEMP (fix TEMP) ) (setq TEMP (+ (fix TEMP) 1)) ) ) ) (setq TEMP (* BASIS TEMP (if (< Zahl 0 ) -1.0 1.0))) ) ) (if (=(type BASIS)'INT) (fix TEMP) TEMP) ) (defun koord_rnd (satz nachkomma) (foreach ent_data (mapcar 'entget (vl-remove-if-not '(lambda (dummy) (= (type dummy) 'ENAME)) (mapcar 'cadr (ssnamex satz)) ) ) (entmod (mapcar '(lambda (data) (print data) (if (or (= (car data) 10) (= (car data) 11)) (cons (car data) (mapcar '(lambda (wert) (DT:ROUND2 WERT 0.25) ) (cdr data) ) ) data ) ) ent_data ) ) ) ) (defun c:rd () (command "_undo" "_be") (koord_rnd (ssget '((-4 . "<OR") (0 . "LINE") (0 . "LWPOLYLINE") (0 . "INSERT") (-4 . "OR>")) ) (getint "Bestätigen um im Raster 0.25 der Scheitelpunkte zu runden ") ) (command "_undo" "_e") )
Folgendes sagt die Befehlszeile: Code: Befehl: rd _undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _be Befehl: Objekte wählen: 1 gefunden Objekte wählen: Bestätigen um im Raster 0.25 der Scheitelpunkte zu runden (-1 . <Objektname: 7fff1e722e0>) (0 . "LWPOLYLINE") (330 . <Objektname: 7fffb1b19f0>) (5 . "BC246") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "1_Möblierung-2") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . -5.38568e-009) (39 . 0.0) (10 15445.6 26660.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 15617.1 26814.4) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 15550.9 26887.9) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 15379.4 26733.5) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0) _undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _e Befehl: nil
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Ehrenmitglied V.I.P. h.c. Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 sw: Win7-x64 Office 365 ProPlus C3D (& LT ) ET; DACH; Extensions ------------------- hw: FX3800 i5 CPU 670 8GB RAM
|
erstellt am: 16. Sep. 2014 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Was sagt die Befehlszeile in der anderen Zeichnung? evtl dieses: Code: Objekte wählen: 0 gefundenObjekte wählen: Bestätigen um im Raster 0.25 der Scheitelpunkte zu runden ; Fehler: Fehlerhafter Argumenttyp: lselsetp nil
? Ohne auch nur ansatzweise Ahnung von lisp zu haben, poliere ich die Glaskugel und sehe "LWPOLYLINE". Es gibt da noch 'die anderen' Polylinien... siehe dazu: PLINETYPE in Deiner Programmhilfe
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 17. Sep. 2014 09:31 <-- editieren / zitieren --> Unities abgeben:
Ne, glaube nicht das das der Grund ist bei PLINETYP sind beide Zeichnungen auf 2... Wo sehe ich denn welcher Linientyp eine Linie/Polyline ist ? Also hier mal Auszug von Beiden Befehlsabläufen. Code: Befehl: rd _undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _be Objekte wählen: 1 gefunden Objekte wählen: Bestätigen um im Raster 0.25 der Scheitelpunkte zu runden (-1 . <Objektname: 7ffffb1a300>) (0 . "LWPOLYLINE") (330 . <Objektname: 7ffffb039f0>) (5 . "4398") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "1_Möblierung-2") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 3.71869e-007) (39 . 0.0) (10 3219.02 3620.83) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1544.07 3620.79) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1544.23 2697.23) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 3218.82 2697.26) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0) _undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _e nil Befehl: Befehl: Befehl: *Abbruch* Befehl: EIGENSCHAFTEN Befehl: *Abbruch* Befehl: re RECHTECK Ersten Eckpunkt angeben oder [Fasen/Erhebung/Abrunden/Objekthöhe/Breite]: Anderen Eckpunkt angeben oder [Fläche/Abmessungen/Drehung]: Befehl: *Abbruch* Befehl: Entgegengesetzte Ecke angeben oder [Zaun/FPolygon/KPolygon]: Befehl: Befehl: Befehl: _copyclip 1 gefunden Befehl: Befehl: rd _undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _be Objekte wählen: 1 gefunden Objekte wählen: Bestätigen um im Raster 0.25 der Scheitelpunkte zu runden (-1 . <Objektname: 7ffffb1a310>) (0 . "LWPOLYLINE") (330 . <Objektname: 7ffffb039f0>) (5 . "4399") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 5269.01 2503.7) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 4486.85 2503.7) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 4486.85 1628.95) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 5269.01 1628.95) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0) _undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _e nil Befehl: Befehl: Befehl: *Abbruch*
[Diese Nachricht wurde von Bunnyguard am 17. Sep. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Ehrenmitglied V.I.P. h.c. Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 sw: Win7-x64 Office 365 ProPlus C3D (& LT ) ET; DACH; Extensions ------------------- hw: FX3800 i5 CPU 670 8GB RAM
|
erstellt am: 17. Sep. 2014 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
>> Ne, glaube nicht das das der Grund ist bei PLINETYP sind beide Zeichnungen auf 2...Na und? Wenn Du ganz sicher sein willst: POLYKONVERT >> Wo sehe ich denn welcher Linientyp eine Linie/Polyline ist ? anklicken > STRG+1 >> 1x "Polylinie" 1x "2D-Polylinie" Wie erwähnt: War nur Glaskugelgucken. Wenn ich Deinen edit richtig betrachte, sollte es eh an was anderem liegen. Sorry, ich geh wohl besser wieder und überlasse das Feld den Wissenden
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 17. Sep. 2014 10:29 <-- editieren / zitieren --> Unities abgeben:
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 17. Sep. 2014 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Also aus den beiden Befehlsabläufen erkenne ich jetzt nicht welcher geht und welcher nicht . Bin ich da nur zu blind? Am besten Du stellst mal eine funktionierende und eine nicht funktionierende Zeichnung hier rein. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 18. Sep. 2014 07:39 <-- editieren / zitieren --> Unities abgeben:
|
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 GB RAM Win 10 Pro 64Bit Nvidia Quadro P2000 SSD 256 Pro Serie Autocad 2023 Inventor 2023 Pro
|
erstellt am: 18. Sep. 2014 16:23 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 18. Sep. 2014 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Zitat: Original erstellt von Bunnyguard: Ja hab das Problem gefunden... BKS war gedreht dann funktioniert die LISP nicht...Kann man das anpassen das, das auch bei gedrehtem BKS geht ?
Ja, natürlich. Du brauchst nur die Koordinatenpunkte zu transformieren. Suche nach TRANS
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedelzastrow Mitglied Architekt / Bauzeichner
Beiträge: 993 Registriert: 05.07.2007 Win XP AutoCAD 2006 AutoCAD 2009 AutoCAD 2013 LT
|
erstellt am: 18. Sep. 2014 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Hallo, ich bin zwar kein Lispexperte, würde aber vermuten das es viel einfacher ist, nach dem Durchlauf des Lisps das BKS zu drehen. Ich vermute, das es um das drehen des Planes im Layoutbereich geht um den Platz besser auszunutzen. Wenn dem so ist: Ich hab mir das mal ein einen "Knopf" (Werkzeugkasten) gelegt ^C^C_.mspace;_ucs;welt;_ucs;n;3;0,0,0;0,-100,0;;^C^C_plan;;_.pspace ist bestimmt noch verbesserungswürdig Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Sep. 2014 17:01 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Zitat: Original erstellt von Bunnyguard: Ja hab das Problem gefunden... BKS war gedreht dann funktioniert die LISP nicht...Kann man das anpassen das, das auch bei gedrehtem BKS geht ? Danke
Die Aussage möchte ich in dem Fall mal korrigieren: Das Lisp funktioniert auch dann, es interessiert sich nämlich nicht für das BKS. Das Lisp verändert die Objektdaten und das macht es UNABHÄNGIG vom eingestellten Koordinatensystem. Objektdaten sind immer in WKS-Koordinaten gespeichert. Versetze und/oder dreht das Koordinatensystem(also ungleich des WKS) und man fragt die Objektdaten mit BKS-Koordinaten ab (Befehl Liste zB, oder die Eigenschaften Palette), dann siehst du ja die auf das BKS umgerechneten Werte. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 19. Sep. 2014 08:15 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Sep. 2014 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Als erstes wäre es gut an der richtigen Formulierung der Aufgabe zu arbeiten, wenn da herraus kommt das man wirklich etwas verändern möchte (Rundung soll sich auf das aktuelle BKS beziehen, dafür im WKS bescheiden aussehen), dann liest man sich in der Hilfe und im www zur Lispfunktion ein, die archtools bereits genannt hat. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 22. Sep. 2014 07:22 <-- editieren / zitieren --> Unities abgeben:
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 22. Sep. 2014 08:45 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
|
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 22. Sep. 2014 09:32 <-- editieren / zitieren --> Unities abgeben:
|
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 GB RAM Win 10 Pro 64Bit Nvidia Quadro P2000 SSD 256 Pro Serie Autocad 2023 Inventor 2023 Pro
|
erstellt am: 30. Sep. 2014 08:20 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, ich bräuchte mal wieder die Lisp, aber leider sind die Objekte nicht auf BKS (Welt) Ist es vllt. möglich das mir jemand diese Lisp so umstrickt das diese auch bei gedrehtem BKS (WKS) funktioniert... Wäre sehr nett Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 30. Sep. 2014 08:26 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
(trans ..) ist hier das Stichwort. Und da wir uns in einem Hilfeforum zur AutoLISP-Programmierung befinden (und nicht in einem MachtMirMalBitteBitte-Forum) denke ich, dass der Hinweis genügt. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 365 Registriert: 15.12.2009
|
erstellt am: 09. Okt. 2014 16:32 <-- editieren / zitieren --> Unities abgeben:
Kann mir hier jemand bitte sagen wie ich herraus finde wieso diese Lisp in einer Zeichnung funktioniert und in einer andern Nicht ? BKS steht diesmal bei beiden Zeichnungen auf WELT...an dem kann es nicht ligen. Code: ;Polyadd.lsp ;Version 1.4 lauffähig unter ACAD 2002 bis 2007 ; Copyright Oktober 2007 by ; Wolfgang Raeder, Sperlingslust 1, 36284 Hohenroda, Germany ; Tel. 06676/1237 ; email: Polyadd@RealvieW.de ; homepage: www.RealvieW.de ;Das Programm wird dem Benutzer so zur Verfügung gestellt, "wie es ist". ;Für eventuelle Programmfehler oder Schäden durch die Anwendung ;wird keine Haftung übernommen, ebensowenig eine Garantie ;für das ordnungsgemäße Funktionieren des Programms. ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;>>>>>>>>>>>>>>>>>>>>>>>HILFSFUNKTIONEN:<<<<<<<<<<<<<<<<<< ;<<<<<<<<<<<<<
(Defun Polyadd_Hilfsfunktionen () ;Sichern von Systemvariablen (DEFUN SICHERN () (SETQ cmdakt (GETVAR "cmdecho") ;AutoLISP-Befehlsfunktionen zurückgegeben osmakt (GETVAR "osmode") ;fortlaufende Objektfangmodi orthakt (GETVAR "orthomode");Beschränkt Cursorbewegungen auf die Lotrechte snapakt (GETVAR "snapmode") ;Aktiviert und deaktiviert den Fangmodus blipakt (GETVAR "blipmode") ;Steuert die Sichtbarkeit von Markierungspunkten layakt (GETVAR "clayer") ;Legt den aktuellen Layer fest colorakt (GETVAR "cecolor") ;Legt die Farbe für neue Objekte fest celtyakt (GETVAR "celtype") ;Legt den Linientyp für neue Objekte fest cwghtakt (GETVAR "celweight") ;Linienstärke ocoorakt (GETVAR "osnapcoord");in der Befehlszeile eingegebene Koordinaten fortlaufende Objektfänge außer Kraft setzen scalakt (GETVAR "celtscale") ;Objektlinientyp Polywakt (GETVAR "plinewid") ;Objektlinientyp paccakt (GETVAR "peditaccept");Unterdrückt Anzeige der Meldung Das gewählte Objekt ist keine Polylinie im Befehl PEDIT old_err *error* *error* new_err ) ) ;____________________________________ ;Setzen von Systemvariablen und Vorgaben (DEFUN SETZ () (SETVAR "cmdecho" 0) (command "_.Undo" "_group") (SETVAR "blipmode" 0) (SETVAR "snapmode" 0) (SETVAR "osnapcoord" 1) (SETVAR "peditaccept" 1) ) ;____________________________________ ;Gesicherte Variablen zurückschreiben (DEFUN RESTORE () (command "_.UNDO" "_END") (SETVAR "cmdecho" cmdakt) (SETVAR "osmode" osmakt) (SETVAR "orthomode" orthakt) (SETVAR "snapmode" snapakt) (SETVAR "blipmode" blipakt) (SETVAR "clayer" layakt) (SETVAR "cecolor" colorakt) (SETVAR "celtype" celtyakt) (SETVAR "celtscale" scalakt) (SETVAR "celweight" cwghtakt) (SETVAR "osnapcoord" ocoorakt) (SETVAR "plinewid" Polywakt) (SETVAR "peditaccept" paccakt) (SETQ *error* old_err cmdakt Nil osmakt Nil orthakt Nil snapakt Nil blipakt Nil layakt Nil ) (REDRAW) (PRINC) ) ;____________________________________ ;Neue Error-Funktion (defun new_err (msg) (Restore) ;Gesicherte Variable zurücksetzen (princ "\nRestore erledigt") (command "_.UNDO" "1") (command "_.REGEN") (cond ((= msg "Beenden/Verlassen abbrechen") (princ "\nFunktion *Polyadd* durch Benutzer abgebrochen") (princ) ) ((= msg "quit / beenden abbrechen") (princ "\nFunktion *Polyadd* durch Benutzer abgebrochen") (princ) ) ((= msg "Funktion abgebrochen") (princ "\nFunktion *Polyadd* durch Benutzer abgebrochen") (princ) ) (T (princ (strcat "\nFehler: " msg)) (princ)) ) ) ;____________________________________ (defun Polywahl () (while (= Polyobjekt nil) (setq Polyobjekt (entsel "\nzu bearbeitende Polylinie wählen:")) (cond ((= Polyobjekt nil) (princ "\n ...Nichts gewählt - bitte nochmal versuchen"))
((= (cdr (assoc 0 (entget (car Polyobjekt)))) "CIRCLE") ; (princ "\n ...Objekt Kreis wird in Polylinie gewandelt") (CIRC2POL)) ((/= (cdr (assoc 0 (entget (car Polyobjekt)))) "LWPOLYLINE") ; (setq Polyobjekt nil) (princ "\n ...Objekt ist keine Polylinie - bitte nochmal wählen")) (T (princ "\nPolylinie gefunden")) ) ) (setq Polyobjekt (car Polyobjekt)) (redraw Polyobjekt 3) ) ;____________________________________ (Defun CollektInfo () (setq AlleInfo (entget Polyobjekt) Polylayer (cdr (assoc 8 AlleInfo)) ;Layer Polyltyp (cdr (assoc 6 AlleInfo)) ;Linientyp Polyltfakt (cdr (assoc 48 AlleInfo)) ;Linientypfaktor Polycolor (cdr (assoc 62 AlleInfo)) ;Farbe LinStark (cdr (assoc 370 AlleInfo)) ;Linienstärke Polyerheb (cdr (assoc 38 AlleInfo)) ;Erhebung Polyobhoch (cdr (assoc 39 AlleInfo)) ;Objekthöhe PolyLinStark (cdr (assoc 43 AlleInfo)) ;Globale PLinienbreite ) ) ;____________________________________
(Defun Addwahl ( / ) (princ "\n...Objekte zum Vereinigen wählen:") (Setq Objadd (ssget) OAnzahl (sslength Objadd) ) (setq Objadd (polyfilter Objadd '((0 . "LWPOLYLINE") (0 . "CIRCLE") ))) (setq OAnzahl (sslength Objadd)) (if (= (ssmemb Polyobjekt Objadd) Polyobjekt) (princ) (setq OAnzahl (1+ OAnzahl)) ) ) ;____________________________________ (defun polyfilter (Auswahl Bedingung / Zahl Ausgabe Element) (setq Ausgabe (ssadd) Zahl 0.0 ) (while (< Zahl (sslength Auswahl)) (setq Element (ssname Auswahl Zahl)) (if (apply 'or (mapcar '(lambda (X) (member x (entget Element))) Bedingung ) ) (ssadd Element Ausgabe) ) (setq Zahl (1+ Zahl)) ) (setq Ausgabe Ausgabe) ) ;____________________________________ (defun PVereinigung ( / AWXNr AWXplode Neuobjekt) (Varisetz) (command "_.region" Polyobjekt Objadd "") (command "_union" (Objektwahl) "") (command "_.explode" "_L") (setq AWXplode (ssget "_p") AWXNr (sslength AWXplode) ) (if (> AWXNr 2) (progn (command "_.pedit" "_m" AWXplode "" "_j" "0.0" "") ) (progn (alert "\nVereinigung der Polylinien \n nicht möglich") (exit) ) ) (setq Neuobjekt (entget (entlast))) (if Polyltfakt (setq Neuobjekt (append Neuobjekt (list (cons 48 Polyltfakt)))) ) (if Polyobhoch (setq Neuobjekt (append Neuobjekt (list (cons 39 Polyobhoch)))) ) (if PolyLinStark (setq Neuobjekt (append Neuobjekt (list (cons 43 PolyLinStark)))) ) (if LinStark (setq Neuobjekt (append Neuobjekt (list (cons 370 LinStark)))) ) (entmod Neuobjekt) (princ "\nZeichnen der neuen Polylinie") (princ "\n....fertig!") ) ;____________________________________ (Defun Objektwahl ( / KWort EMin EMax AWSL AWS OAWS Zähler Ename) (setq EMin (Getvar "Extmin") EMax (Getvar "Extmax") AWS (SSget "_C" EMin EMax) AWSL (SSLength AWS) OAWS (SSadd) Zähler 0 ) (repeat OAnzahl (Setq Ename (ssname AWS Zähler) Zähler (1+ Zähler) ) (SSADD Ename OAWS) (redraw Ename 3) ) (redraw) (setq OAWS OAWS) ) ;____________________________________ (Defun CIRC2POL ( / BPunktR BPunktL KRadius Kzentrum) (setq AlleInfo (entget (car Polyobjekt)) Kzentrum (cdr (assoc 10 AlleInfo)) KRadius (cdr (assoc 40 AlleInfo)) BPunktR (polar Kzentrum 0 KRadius) BPunktL (polar Kzentrum pi KRadius) ) (command "_.break" Polyobjekt "_f" BPunktR BPunktL) (command "_.mirror" Polyobjekt "" BPunktR BPunktL "_no") (command "_.pedit" "_l" "_join" "_p" "" "") (setq Polyobjekt (list (entlast) Kzentrum)) (princ "\nKreisumwandlung fertig") ) ;____________________________________ (defun Varisetz () (SETVAR "clayer" Polylayer) (if Polycolor (SETVAR "cecolor" (itoa Polycolor)) ) (if Polyltyp (SETVAR "celtype" Polyltyp) ) (if Polyltfakt (SETVAR "celtscale" Polyltfakt) ) ) ;____________________________________
) ;Ende Polyadd_Hilfsfunktionen
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;>>>>>>>>>>>>>>>>>>>>>>>>>Hauptprogramm:<<<<<<<<<<<<<<<<& lt;<<<<<<<<<<<<<
(defun c:Polyadd ( / POLYOBJEKT ADDWAHL ALLEINFO CELTYAKT CIRC2POL COLLEKTINFO COLORAKT CWGHTAKT LINSTARK NEW_ERR OANZAHL OBJADD OBJEKTWAHL OCOORAKT OLD_ERR POLYCOLOR PACCAKT POLYERHEB POLYFILTER POLYLAYER POLYLINSTARK POLYLTFAKT POLYLTYP POLYOBHOCH POLYWAHL POLYWAKT PVEREINIGUNG RESTORE SCALAKT SETZ SICHERN VARISETZ) (Polyadd_Hilfsfunktionen) (sichern) (setz) (Polywahl) (CollektInfo) (Addwahl) (PVereinigung) (Restore) ) ;Dieser Text wird beim Laden des Programmes in die Befehlszeile geschrieben (princ "\nCopyright Oktober 2007 by Wolfgang Raeder, RealvieW.de ") (princ "\nBefehlsaufruf mit \"Polyadd\" ") (princ)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Okt. 2014 16:40 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Zitat: Original erstellt von Bunnyguard: Kann mir hier jemand bitte sagen wie ich herraus finde wieso diese Lisp in einer Zeichnung funktioniert und in einer andern Nicht ? BKS steht diesmal bei beiden Zeichnungen auf WELT...an dem kann es nicht ligen.[/code]
In dem du beachtest das nicht nur die Zeichnung unterschiedlich ist (Zeichnungsgespeicherte Systemvariablen), sondern auch die Objekte andere sind (Objekttyp oder einfach die Lage der Objekt, oder die verwendeten Stile etcpp) So wie dein Hinweis mit dem BKS bzw dem WKS geht man dann nach und nach die Möglichkeiten durch und schränkt diese weiter ein, bis man es hat. Alos Objekttyp, Position (Objekt von einer zu andere DWG mal mit originalkoordinaten kopieren und testen..) usw. Nachtrag: Über so Beschreibungen wie "wieso diese Lisp in einer Zeichnung funktioniert und in einer andern Nicht ?" müßten wir doch auch schon hinaus sein, oder? WAS funktioniert wie nicht? was passiert / was sollte ? Wo sind die beiden Beispieldateien ? usw. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 09. Okt. 2014 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Und wir werfen wieder die Glaskugel an Welche Antwort möchtest Du denn haben, wenn weder die Zeichnung in der es funktioniert noch die fehlerhafte Zeichnung mitgeliefert wird? Vermutlich liegen da irgendwelche Fehler in den Polylinien vor (falscher Typ, Schnittpunkte, Liniensegmente mit Länge 0, Abstand zwischen den Polylinien, Unterschiedliche Höhen ...) [Edit]Ups, cadffm war mal wieder schneller ... [Diese Nachricht wurde von KlaK am 09. Okt. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 09. Okt. 2014 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
... mit den vielen Commands bist du von der aktuellen Systemumgebung abhängig. Sowohl die Systemvariablen als auch angezeigten Ausschnitt usw. Entweder du checkst das alles, stellst es so ein, wie du es brauchst und am Ende wieder zurück - oder der für den ungeübten schwerere Weg und du liest und schreibst direkt aus/in die Zeichnungsdatenbank. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Okt. 2014 17:02 <-- editieren / zitieren --> Unities abgeben: Nur für Bunnyguard
Und ich vermute im Fail-Fall das die PL´s und Kreise eben KEINE geschlossene Kontur ergeben.. (PS: Es ist nicht mal nachzulesen wofür das Teil gut sein soll, der geneigte Helfer wüßte also nicht mal was bzw. wieviele und warum er wählen sollte. Was als Ergebnis kommen sollte - ) Lust zu helfen hält sich da in Grenzen, aber daran kann man oder Hase ja arbeiten. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |