CADsite forum

AutoCAD => Autolisp => Topic gestart door: cadtools@gmail.com op di 14 02 2017, 23:24:57

Titel: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op di 14 02 2017, 23:24:57
Hoi

Ik heb nogal wat tijd en moeite gestopt om een dialoogvenster voor elkaar te krijgen.
Werkt prima tot nu toe. Wat ik alleen nog zou willen, is dit..:

Het laden en toewijzen van objecten werkt nu alleen ná activeren van de functie. Echter, hij zou ontzettend cool zijn als het ook zou werken als je eerst objecten zou hebben geselecteerd.

Wie is er handig met OpenDCL?

https://youtu.be/69toSigzGso
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op wo 15 02 2017, 09:31:05
Hans,

Jou tool kan idd handig zijn!
Maar misschien kun je het maken voor als er toch layer afspraken zijn gemaakt.
BV:
X-XX-AL-DETAIL1-G
Zou dan dit kunnen worden:
X-XX-AL-DETAIL1_1-G
X-XX-AL-DETAIL1_20-G
Of
X-XX-AL-DETAIL1_KLEUR 40-G
X-XX-AL-DETAIL1_KLEUR 150-G

Voor je selectie, bedoel je dit (OpenDCL werkt met lisp toch?)?
(defun C:Test ( / a )
  (vl-cmdf "select")
    (while (> (logand (getvar"CMDACTIVE") 1) 0)
      (vl-cmdf pause)
    )
  (setq a (ssget "_P"))
)

Titel: Re: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op do 16 02 2017, 22:57:25
Eddy Wij komen elkaar ook overal tegen !! haha :)
Is het niet op CIB dan wel hier.. die hards.. :)

Je mag 'm tweaken wat je wilt maar doe niet mee in NLCS (teleurgesteld , laksheid organisatie, geen visie, niet DWG ondersteund voor kunstwerken). Ik zie er dus geen meerwaarde in fancy naampjes te gebruiken die niets zeggen. Voor mij werkt 1,2,3,4,... (zoals deze tool bedoeld is) Ik zal je suggestie eens testen.

- werk jij met OpenDCL? Waarom wel/niet?
- Heb je de tool getest (met deze wijziging)?
- mocht je je afvragen waar de code staat. hier.  *!
http://www.opendcl.com/forum/index.php?topic=1945.msg12372#msg12372


Cheers, hans

*EDIT*


(DEFUN C:LaC ( / )
  (setvar "cmdecho" 0)
  (setq ss2 (getvar "clayer"))
  (command "-layer" "on" ss2 "" "")
   (vl-cmdf "select")                                                         ; werkt prima Eddy
    (while (> (logand (getvar"CMDACTIVE") 1) 0)
      (vl-cmdf pause)
    )
  (setq a (ssget "_P"))   
  (command "_.chprop" SS1 "" "_layer" (getvar "clayer") "")  ; .. maar bij mij gaat dit mis ..(getvar "clayer") niet geaccepteerd..  :roll:
  (setvar "cmdecho" 1)
  ;(setvar "clayer" ss2)
  (princ)
  )


*EDIT *

nb *!
even voor de duidelijkheid.. Dit idee komt van een ander, het is volgens mij helemaal opn source, anders had diegene het waarschijnlijk niet gedeeld,.. Ik probeer het alleen nog wat beter te krijgen..




Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op vr 17 02 2017, 08:29:03
Ik brdoelde eigenlijk dat je de naam van de layer van het object neemt en daar de colornr achter zet.
Titel: Re: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op vr 17 02 2017, 09:03:28
Je wilt het gebruiken voor een alternatief kleurtoewijzing aan layers? Volgens mij is dat wel mogelijk.
Mooie van OpenDCL is dat je de inderface makkelijk kunt maken. Ik stel voor om een vinkje te gebruiken "apply color as layername" versus "apply color as layercolor".

Nock yourself out zou ik zeggen.. ;-)

ps Dat stukje code succesvol omgezet naar onderstaand. Dit werkt volgens mij ook beter dan (select objects) command : laycur. Het gedeelte (select objects) en de de knop indruk nog niet helemaal..


(DEFUN C:LaC ( / )
   (vl-cmdf "select")
    (while (> (logand (getvar"CMDACTIVE") 1) 0)
      (vl-cmdf pause)
    )
  (setq a (ssget "_P"))   
  (command "LAYCUR" a "" )
  (princ)
  )
Titel: Re: OpenDCL Color_swatch
Bericht door: roy_043 op vr 17 02 2017, 10:26:04
Wat gebeurt er in het volgende scenario... ?:
1. Er is geen preselectie.
2. LaC wordt aangeroepen.
3. De gebruiker selecteert niets.
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op vr 17 02 2017, 11:10:52
Citaat van: roy_043 op vr 17 02 2017, 10:26:04
Wat gebeurt er in het volgende scenario... ?:
1. Er is geen preselectie.
2. LaC wordt aangeroepen.
3. De gebruiker selecteert niets.
Dan loopt de routine in de soep!
Of Hans heeft een errorhandler...
Titel: Re: OpenDCL Color_swatch
Bericht door: roy_043 op vr 17 02 2017, 11:31:15
... En als er een 'Previous' selectie is... ?
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op vr 17 02 2017, 12:18:05
Citaat van: roy_043 op vr 17 02 2017, 11:31:15
... En als er een 'Previous' selectie is... ?
Try before you die....
Titel: Re: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op vr 17 02 2017, 14:08:49
Hold your horses. Één tegelijk.
Voorlopig heb ik nog niets van dat alles..
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op vr 17 02 2017, 16:42:14
Hans,
Ik zou dit:
(command "_.chprop" SS1 "" "_layer" (getvar "clayer") "")
In vlisp maken... Veel handiger om op die manier de laag toe te kennen aan een object.
Weet zo ff de code niet maar kan maandag weer ff kijken... Ben nu weekend aan t vieren.
Dus bij deze... Fijn weekend allemaal.
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op ma 20 02 2017, 11:35:38
Altijd nodig bij het gebruik van VLISP:
(vl-load-com)
Om de layer op te vragen:
  (setq e (car (entsel)))
  (setq o (vlax-ename->vla-object e))
  (vla-get-layer o)

Om het object op een layer te zetten:
  (setq e (car (entsel)))
  (setq o (vlax-ename->vla-object e))
  (vla-put-layer o Jou_Layer_Name)

Jou_Layer_Name bevat de string van de laagnaam.
Titel: Re: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op di 21 02 2017, 23:07:00
Geen idee.
Ik ben even kwijt, niet zoveel trek meer in..


(DEFUN C:LaC (/)
    (vl-load-com)
    (setq curlay (getvar "celayer"))
    (vl-cmdf "select")
    (while (> (logand (getvar "CMDACTIVE") 1) 0) (vl-cmdf pause))
    (setq a (ssget "_P"))
    (vla-put-layer (a curlay))                    ;  in plaats van (command "LAYCUR" a "" ) maar werkt niet.. Command: ; error: bad function: <Selection set: a0>
    (princ)
)


en dit geprobeerd, maar haakt ook af op DXF code..

(defun Layermake (Nme Col Ltyp LWgt)
  (entmake (list (cons 0 "LAYER")
                 (cons 100 "AcDbSymbolTableRecord")
                 (cons 100 "AcDbLayerTableRecord")
                 (cons 2  Nme)
                 (cons 70 0)
                 (cons 62 Nme)
                 (cons 370 LWgt)))
    princ (strcat "\n " Nme " created: "))

(defun ColorButtonOnClick (idx)
    (setq itoaidx (itoa idx))
    (setq rtosidx (rtos (float idx) 2 0))
    (if (not (tblsearch "layer" rtosidx))
        (progn (setq oldcmdecho (getvar "cmdecho"))
               (setvar "cmdecho" 0)
               (Layermake rtosidx idx "Continuous" -3)
               (setvar 'Clayer rtosidx)           ;   (command "layer" "m" rtosidx "c" rtosidx "" "s" rtosidx "")

               (setvar "cmdecho" oldcmdecho)
        )                                         ;end progn
        (princ "\nLayer exist.")
    )
  ; (c:lac)
)


Titel: Re: OpenDCL Color_swatch
Bericht door: roy_043 op wo 22 02 2017, 09:34:04
(getvar "celayer") :vraagteken: :vraagteken:
(cons 62 Nme) :vraagteken: :vraagteken:
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op wo 22 02 2017, 10:26:54
Het is trouwens nier celayer maar clayer
Volgens mij wil je dit:
(DEFUN C:LaC (/ acadObj doc modelSpace curlay err returnObj basePnt)
(vl-load-com)
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
  (setq modelSpace (vla-get-ModelSpace doc))
(setq curlay (getvar "clayer"))
(while (= (setq err (vl-catch-all-apply 'vla-GetEntity (list (vla-get-Utility doc) 'returnObj 'basePnt "Select an object"))) nil)
(vla-put-layer returnObj curlay)
(vla-Update returnObj)
)
(princ)
)
Titel: Re: OpenDCL Color_swatch
Bericht door: EddyBeerke op wo 22 02 2017, 14:58:41
Ik heb deze code ook maar gelijk op een eigen tool toegepast  :mrgreen:
BTW, De code van het selecteren komt van de vrienden van Autodesk -> de help.
Citaat van: EddyBeerke op wo 22 02 2017, 10:26:54
Het is trouwens nier celayer maar clayer
Volgens mij wil je dit:
(DEFUN C:LaC (/ acadObj doc modelSpace curlay err returnObj basePnt)
(vl-load-com)
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
  (setq modelSpace (vla-get-ModelSpace doc))
(setq curlay (getvar "clayer"))
(while (= (setq err (vl-catch-all-apply 'vla-GetEntity (list (vla-get-Utility doc) 'returnObj 'basePnt "Select an object"))) nil)
(vla-put-layer returnObj curlay)
(vla-Update returnObj)
)
(princ)
)

Titel: Re: OpenDCL Color_swatch
Bericht door: gery op wo 22 02 2017, 20:17:13
Citaat van: cadtools@gmail.com op di 14 02 2017, 23:24:57
Het laden en toewijzen van objecten werkt nu alleen ná activeren van de functie. Echter, hij zou ontzettend cool zijn als het ook zou werken als je eerst objecten zou hebben geselecteerd.
Daarvoor gebruik ik dit:
(if (not (setq #ss (ssget "_I"))) (setq #ss (ssget)))
Titel: Re: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op wo 22 02 2017, 22:24:21
Bedankt AutoCAD vrienden!
Dat regeltje werkt super om meer dan een element te kunnen selecteren! Bedankt Gery (en Eddy natuurlijk ook) Er zit in onderstaande nog wel command call in maar ik kan er volgens mij prima mee werken.



(DEFUN C:LaC (/)
(if (not (setq #ss (ssget "_I"))) (setq #ss (ssget)))
(command "LAYCUR" #ss "" ))


En een keyboard entry "P" na indrukken knop werkt eigenlijk ook wel prima.
Je moet het even weten.

Titel: Re: OpenDCL Color_swatch
Bericht door: roy_043 op wo 22 02 2017, 23:34:50
Of:
(defun c:Lac ( / ss)
  (if
    (setq ss
      (if (zerop (getvar 'pickfirst))
        (progn (sssetfirst nil nil) (ssget ":L"))
        (ssget "_:L-I")
      )
    )
    (command "_.laycur" ss "")
  )
  (princ)
)


De toevoeging ":L" in (ssget "_:L-I") heeft niet één maar twee effecten: elementen op gelockte lagen worden niet geselecteerd, maar bovendien wordt de gebruiker alsnog om een selectie gevraagd als er geen preselectie is. Dat laatste gebeurt niet bij (ssget "_I").
Titel: Re: OpenDCL Color_swatch
Bericht door: roy_043 op do 23 02 2017, 00:20:46
BTW: Deze topic zou eigenlijk verplaatst moeten worden naar het Autolisp gedeelte van het forum.
Titel: Re: OpenDCL Color_swatch
Bericht door: cadtools@gmail.com op do 23 02 2017, 15:14:03
Merci :vreegoe: