FastFiber

OpenDCL Color_swatch

Gestart door cadtools@gmail.com, di 14 02 2017, 23:24:57

Vorige topic - Volgende topic

cadtools@gmail.com

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

EddyBeerke

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"))
)

Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cadtools@gmail.com

#2
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..





EddyBeerke

Ik brdoelde eigenlijk dat je de naam van de layer van het object neemt en daar de colornr achter zet.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cadtools@gmail.com

#4
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)
  )

roy_043

Wat gebeurt er in het volgende scenario... ?:
1. Er is geen preselectie.
2. LaC wordt aangeroepen.
3. De gebruiker selecteert niets.

EddyBeerke

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...
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

... En als er een 'Previous' selectie is... ?

EddyBeerke

Citaat van: roy_043 op vr 17 02 2017, 11:31:15
... En als er een 'Previous' selectie is... ?
Try before you die....
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cadtools@gmail.com

Hold your horses. Één tegelijk.
Voorlopig heb ik nog niets van dat alles..

EddyBeerke

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.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

EddyBeerke

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.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cadtools@gmail.com

#12
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)
)



roy_043


EddyBeerke

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)
)
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/