 |
Lisp : Textstil per LISP umbenennen, falls vorhanden
cadffm am 01.02.2017 um 15:02 Uhr (15)
Zitat:Original erstellt von CADwiesel:Es heisst ja auch rename!mal das (/= nil nicht kommentiert Ich kommentiere es mal:Alles was nicht nil ist, ist wahr, also ist dieser Teil überflüssig(if (tblsearch "STYLE" Stilname1) (command "_.-RENAME" "_style" "Stilname1" "Stilname2")) ------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : Textstil per LISP umbenennen, falls vorhanden
cadffm am 01.02.2017 um 15:29 Uhr (1)
If prüft nur auf eine Bedingung, aber es gibt Funktionen um mehrere Ausdrücke zu einem zusammenzufassenPROGNANDORusw.Code:(if (and (tblsearch "STYLE" "Stilname1") (not(tblsearch "STYLE" "Stilname2")) ) (command "_.-RENAME" "_style" "Stilname1" "Stilname2")) ;----------------------------------------------------------------(if (tblsearch "STYLE" "Stilname1") (if (not(tblsearch "STYLE" "Stilname2")) (command "_.-RENAME" "_style" "Stilname1" "Stilname2") (alert "Stilname2 b ...
|
| In das Form Lisp wechseln |
|
Lisp : Text auslesen
cadffm am 05.02.2017 um 20:01 Uhr (1)
Es ist zwar äußerst ungeschickt gleichnamige Blöcke mit unterschiedlichem Inhalt haben, aber wenn das so vorliegt, ok.(tblobjname "Block" "Bauteilinfo")Bringt dich zum BlockobjektMit entnext kannst du dich ab diesem Objekt durch Objekte im Block durchhangeln.Falls es aber doch um Attributwerte an Blockreferenzen geht, wäre das die völlig falsche Stelle.FAQ: BlöckeEine DWG würde potentiellen Helfern sehr viel Fragen (er)klären.------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : Wert für Koordinate definieren
cadffm am 05.02.2017 um 23:15 Uhr (1)
Ganz habe ich das konkrete Beispiel nicht verstanden, aber wohl auch nicht wichtig.Nur x und y wird benötigt? OK:Du möchtest eine Liste mit zwei Werten, eine Liste erstellst du mit der Funktion LIST.(list 1 2) - (1 2)Bestimmte Werte eine bestehenden Liste auslesen kannst du mit nth oder mit car (cadr usw.)Anscheinend hast du schon ein konkretes Programmierziel, wem es aber bereits an dieser Aufgabe schwer fällt,der sollte vielleicht doch erst eins zwei Wochen ein Basis-Turorial pauken.Es ist nur ein Rat, d ...
|
| In das Form Lisp wechseln |
|
Lisp : Text auslesen
cadffm am 06.02.2017 um 15:08 Uhr (1)
@CWMan kann durchaus verschiedene Blöcke, mit gleichem Namen, in unterschiedlichen DWG Dateien haben.------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : mehrzeilige Attribute
cadffm am 19.02.2017 um 18:48 Uhr (1)
Wenn du Zeichen für Zeichen vergleichst, dann schau bei jedem P ob die letzten beiden ein waren, das drittletzte aber nicht, oder falls doch, das viertletzte auch..Will nur sagen: Vergesse nicht das man auch "abP" etc. als gültigen Anzeigewert vorfinden kann.vl-string-search findet auch Zeichenketten in Zeichenketten, aber auch hier müßte man prüfen ob nicht "P" als Ausgabetextwert vorliegt.------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : Auswahlsatz mit Filter erstellen
cadffm am 20.02.2017 um 12:08 Uhr (1)
"kann ich einen Auswahlsatz mit einem Fenster(Kreuzen) UND einer Filterliste erstellen"JaAlso passt deine Fenster-Punkt Koordinate nicht, oder deine Filterliste nicht zu den Objekten,oder die aktuelle Anzeige des Zeichnungsfenster ist für die Objektwahl ungünstig (AutoCAD-Fenster Wahl ist ja Ansichtsabhängig, so auch ssget).Zoome mal auf den Bereich um den es geht und führe den Code erneut durch,checke deine Koordinaten und die Filterliste bzgl. der Objekteigenschaften.------------------CAD on demand GmbH ...
|
| In das Form Lisp wechseln |
|
Lisp : Attribut in Text umwandeln und Blocksymbollayer
cadffm am 21.02.2017 um 10:43 Uhr (1)
OT"Beim versuchten Antworten auf den Beitrag wurde angezeigt das er schon älter als ein Jahr ist,da ich keine Ahnung habe ob ich den wieder "aktivieren" kann deshalb ein neuer Beitrag."Das ist nur ein Texthinweis (als hättest du ihn selbst als Antwort getippt!), mehr nicht.Kannst du löschen oder stehen lassen und ganz normal antworten.Da dieser Thread nun aber bereits erstellt ist, kann es auch hier weiter gehen.------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : Attribut in Text umwandeln und Blocksymbollayer
cadffm am 21.02.2017 um 13:46 Uhr (1)
Theoretisch ja, praktisch nein.Oder bekommst du XPLODE über deine (Command ..)-Anweisung gesteuert?Du bist hier im Programmier-Forum, also programmiere:Merke die den Layer des Objektes(der Blockreferenz), also an passender Stelle dann (setq oldLayer (assoc 8 el))nach auflösen der Blockreferenz änderst du den Layer der neuen Einzel-Objekte,das kannst du unten in der vorhandenen while-Schleife einbauen(entmod(subst oldLayer (assoc 8 (entget le)) (entget le)))Aber wieso immer kaputt machen, man sollte sich fr ...
|
| In das Form Lisp wechseln |
|
Lisp : Attribut in Text umwandeln und Blocksymbollayer
cadffm am 21.02.2017 um 14:20 Uhr (1)
Die passende While-Schleife gibt es bereits im Code, inkl. Abfrage Attdef ja/nein------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : Attribut in Text umwandeln und Blocksymbollayer
cadffm am 21.02.2017 um 17:29 Uhr (1)
du bearbeitest an dieser Stelle aber keine Blöcke und auch keine Blockreferenzen,du bearbeitest Objekte die es zum Zeitpunkt deines SSGET überhaupt noch nicht gab!(und ssget kann nicht nachsehen ob in einer Blockdefinition Objekte mit Farbe ungleich/VonLayer enthalten sind)------------------CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
|
| In das Form Lisp wechseln |
|
Lisp : Gruppieren mit AutoLISP
cadffm am 22.02.2017 um 12:30 Uhr (1)
Abgesehen davon ob man nicht vielleicht mit dem passenden Programm für diese Aufgabe arbeiten sollte.Dynamische Blöcke sicher zum großen Teil sinnvoll eingesetzt werden könnten.Ein normaler Block mit XY-Skalierung auch eine Kompromisslösung darstellt.So würde ich schon mal eine geschlossene Polylinie + Linie den fünf Einzellinien vorziehen.Ob man dann noch eine Gruppierung der 2 Objekte benötigt?Falls ja: Für die Geometrie ist ja schon kein Lisp notwendig, auch nutzt du zum erstellen normale Autocadbefehle ...
|
| In das Form Lisp wechseln |
|
Lisp : Gruppieren mit AutoLISP
cadffm am 22.02.2017 um 15:02 Uhr (1)
Es bleibt dir überlassen die Objekte per Hand zu wählen, oder das Programmso anzupassen das es selbstständig die Objekte ermittelt und dem Gruppen-Befehl übergibt.Ich denke du wirst durch ProgeCAD und Lisp nicht eingeschränkt an dieser Stelle Code:(progn(setq NewElements (ssadd))(setq ELEM (entlast)) ; hier merken, welches Objekt aktuell "das Letzte" ist(command "_.CIRCLE" "20,20" "5")(command "_.CIRCLE" "20,20" "6")(if ELEM ; Wenn vorher bereits Objekte vorhanden waren (while (setq elem (entnext ELEM)); ...
|
| In das Form Lisp wechseln |