Hallo allemaal,
Ik ben op zoek naar het commando om; de kleur (of lijntype, of lineweight) van een object (lijn, block, tekst) , te wijzigen VIA de commando regel. :vraagteken: Dit wil ik vervolgens gaan plakken in een macro of lisp.
Doel is om snel tekeningen van derden op te schonen, wij krijgen regelmatig tekeningen van derden met alles in laag nul en alles in 1 kleur maar wel met verschillende lijndiktes (soms ook in meerdere lagen). Via een macro of lisp zou ik dan graag bv lineweight 0,18mm vertalen naar de kleur rood en deze lijn WEL laten staan in de laag van derden zoals we deze krijgen aangereikt.
Wie kan mij verder helpen?
Groeten Ainstein
om een linetype van kleur te veranderen, kan jet het volgende doen:
-la > C > T > cijfers voor kleur ingeven.
ik gebruik dit om bv layers aan te maken via een toolbutton.
Dan ziet de macro er als volgt uit:
"^C^C-la;m;snede;C;T;255,255,255;;L;continuous;;;
Hopelijk heb je hier wat aan?
De schuine tekst is wat variabel in te vullen is.
MVG
Cad_user86
Beste Ainstein,
Als je het in een LISP routine wil opnemen, dan zou je hier misschien de juiste code kunnen vinden.
http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/ssget-filter-for-lineweight-bylayer/td-p/2136455
Succes!
Richard
Beste Ainstein,
Probeer:
(defun C:018Red(/ ss i)
(if (setq ss (ssget "_X" '((370 . 18))))
(progn
(setq i 0)
(repeat (sslength ss)
(command "_.CHANGE" (ssname ss i) "" "_P" "_C" "1" "")
(setq i (1+ i))
)
)
)
)
(defun C:018Red(/ ss i)
(if (setq ss (ssget "_X" '((370 . 18))))
(progn
(setq i 0)
(repeat (sslength ss)
(command "_.CHPROP" (ssname ss i) "" "_C" "1" "")
(setq i (1+ i))
)
)
)
)
(defun C:018Red(/ ss)
(if (setq ss (ssget "_X" '((370 . 18))))
(command "_.CHPROP" ss "" "_C" "1" "")
)
)
Met vriendelijke groet, HofCAD CSI.
CBLAYR.LSP Change entity color to BYLAYER.
;
; This program sorts entities by their color, and places all entities with
; the same color on a layer whose name is the color number (e.g., entities
; with the color # 3 will be placed on a layer named "3").
;
; The entity color of all entities are changed to "BYLAYER", and the layer
; inherits the color of the entities placed on it.
;
; Essentially, this program was written to eliminate entities with explicit
; color properties, in preperation for exporting via DXF to a post-processor
; that does not honor color-by-entity. Use at your own risk.
(defun C:CBYLAYER ( / ss i hi clayer)
(initget 7)
(setq maxcolor (getint "\nHighest color number: "))
(setq i 0)
(princ "\nConverting entity colors from by-entity to by-layer...")
(setq hi (getvar "highlight"))
(setq clayer (getvar "clayer"))
(setvar "highlight" 0)
(setvar "cmdecho" 0)
(command ".layer")
(repeat maxcolor (command "make" (itoa (setq i (1+ i))) "c" i ""))
(command "")
(setq i 0)
(repeat maxcolor
(if (setq ss (ssget "x" (list (cons 62 (setq i (1+ i))))))
(command ".chprop" ss "" "la" (itoa i) "c" "bylayer" "")))
(setvar "highlight" hi)
(command ".layer" "s" clayer "")
(princ)
)
; ------------------------------eof cblayr.lsp--------------------------
bovenstaande lisp
maakt lagen aan op basis van kleuren en plaast de objecten hier in
mogelijk heb je daar een basis aan
Mannen bedankt voor jullie reactie's!
Dit weekend had ik "gelukkig" weer eens tijd om wat testen te draaien met jullie suggesties.
@ Cad_user 86 een mooie macro, maar deze geeft niet mijn gewenste resultaat.
@ Richard, ik ben een beginnende lisp user, de omschreven lisp kan ik helaas niet ontcijferen, hij doet in ieder geval niet wat ik graag wil, na hier verschillende testen mee te hebben gedraaid.
@ Hofcad naar het commande CHANGE en CHPROP was ik opzoek, bedankt :vreegoe:
Ik heb met alle 3 jouw lispen testen gedraaid. De eerste 2 werken en doen precies wat ik gevraagd heb, mits er geen blocken inzitten :vreegoe:, de derde niet maar dat zal meer aan mij liggen.
Echter na diverse testen bij het opschonen van verschillende projecten kom ik erachter, dat het toch gecompliceerder ligt dan ik dacht.
Wil het opschonen van tekeningen van derden goed werken dan moet men eigenlijk een tool hebben die EN OF rekening houd met de gewenste COLOR EN OF de gewenste LINEWEIGHT.
Vaak hebben tekeningen EEN kleur en wel LIJNDIKTES, soms net andersom, maar meer nog door elkaar heen.
Daarbij komt nog het probleem, ben ik achter gekomen, dat bij het draaien van testen, autocad niet altijd kijkt in blocken en vaak al helemaal niet in een subblock.
@Bart ook een mooie lisp, maar mijn kennis is (nog) te beperkt om deze goed te analyseren laat staan aan te passen.
Iemand nog suggesties en/of ideeën hoe men "eenvoudig" de kleur ROOD van een laag, tegelijkertijd ook van een OBJECT, ook in een block en subblock, met EEN commando de lineweight 0,18 kan geven (en vice versa)?
Groeten Ainstein