Hallo,
Ik probeer vanaf onze toolpalette een polylijn te tekenen met een global width van 250 maar het lukt me niet.
Je moet eerst een lijn tekenen en dan daarvan de global width instellen.
Zou dat misschien mogelijk zijn met een scriptje ofzo?
Met vriendelijke groet Marcel..
Ik las net ergens de variabelen 'plinewid' waarmee je de polyline width kunt opgeven, en daarmee heb ik een gedeelte van mijn probleem opgelost.
Ik heb nu dit scriptje gemaakt.
^C^Cplinewid;250;_pline
Hierna blijft de plwid op 250 staan, en die zou ik graag weer op 0 hebben staan bij het afsluiten van dit script.
Weet iemand of dat mogeljik is en hoe?
Met vriendelijke groet Marcel..
Marcel,
Dit is geen script, maar een macro.
Ik zou gewoon een 2e knop maken, maar dan met de plinewid op 0.
Volgens mij is het nl. lastig om sit in een macro op te nemen.
Succes!
Richard
Ja je hebt helemaal gelijk, het is idd een macro.
Een knop erbij, ja zou altijd kunnen natuurlijk, maar dan hebben we alweer een extra knop erbij, vinden ze hier vast niet leuk.
Maar ik ga toch kijken of het niet anders kan..
Iemand anders nog een idee?
groeten Marcel..
(defun c:PL250 ( / old)
(setq old (getvar 'plinewid))
(setvar 'plinewid 250)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'plinewid old)
(princ)
)
Hi Roy_043
Ik heb de code zelf wat proberen aan te passen zodat eerst de laag ingesteld wordt, en de goede kleur.
Tot zover is het me gelukt, maar ik wil eigenlijk ook nog de linetype op 'hidden2' instellen en de lineweight op 'bylayer'
En stel nu dat iemand e linetype hidden2 niet geladen heeft wat gebeurt er dan?
Ik heb de code zoals ik hem nu heb hieronder staan.
Zou jij nog eens kunnen helpen?
Citeer(defun c:PL40 ( / old)
(setq Lay "HCKP_SONOREX" ColLay "4" LtLay "HIDDEN2" LwLay 0.25)
(if (not (tblsearch "LAYER" Lay))
(command "_.LAYER" "_M" Lay "_C" ColLay "" "_L" LtLay "HIDDEN2" "_LW" LwLay "" ""))
;(command "_.LAYER" "_T" Lay "_ON" Lay "_S" Lay ""))
(setq old (getvar 'plinewid))
(setvar 'plinewid 40)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'plinewid old)
(princ)
)
Beste Marcel,
(defun c:PL40 ( / old)
(setq Lay "HCKP_SONOREX" ColLay "4" LtLay "HIDDEN2" LwLay 0.25)
(if (not (tblsearch "LTYPE" LtLay))
(command "_.LINETYPE" "_L" LtLay "acadiso.lin" "")
)
(if (not (tblsearch "LAYER" Lay))
(command "_.LAYER" "_M" Lay "_C" ColLay "" "_L" LtLay "" "_LW" LwLay "" "")
(command "_.LAYER" "_T" Lay "_ON" Lay "_S" Lay ""))
(setq old (getvar 'PLINEWID))
(setvar 'plinewid 40)(setvar 'CELWEIGHT -1)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'PLINEWID old)
(princ)
)
De regels:
(if (not (tblsearch "LTYPE" LtLay))
(command "_.LINETYPE" "_L" LtLay "acadiso.lin" "")
)
Zijn niet echt nodig.
Met vriendelijke groet, HofCAD CSI.
HofCAD was iets sneller... maar dit is mijn oplossing:
(defun c:PL40 ( / oldCelweight oldClayer oldPlinewid lay)
(setq oldCelweight (getvar 'celweight))
(setq oldClayer (getvar 'clayer))
(setq oldPlinewid (getvar 'plinewid))
(setvar 'celweight -1)
(setvar 'plinewid 40)
(setvar 'cmdecho 0)
(setq lay "HCKP_SONOREX")
(if (not (tblsearch "LAYER" lay))
(vl-cmdf "_.layer" "_new" lay "")
)
(vl-cmdf
"_.layer"
"_on" lay
"_thaw" lay
"_unlock" lay
"_color" 4 lay
"_ltype" "HIDDEN2" lay ; ltype wordt automatische geladen
"_lweight" 0.25 lay
"_set" lay
""
)
(setvar 'cmdecho 1)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'celweight oldCelweight)
(setvar 'clayer oldClayer)
(setvar 'plinewid oldPlinewid)
(princ)
)
In Bricscad worden ltypes door het commando layer automatisch geladen.
Uit de edit van HofCAD (om 13:40:57):
Citaat van: HofCAD op di 23 11 2010, 13:31:04
De regels:
(if (not (tblsearch "LTYPE" LtLay))
(command "_.LINETYPE" "_L" LtLay "acadiso.lin" "")
)
Zijn niet echt nodig.
concludeer ik dat dit:
Citaat van: roy_043 op di 23 11 2010, 13:36:00
In Bricscad worden ltypes door het commando layer automatisch geladen.
toch ook voor AutoCAD geldt.
P.S. Wat zijn eigenlijk de regels m.b.t. het editeren van berichten op dit forum?
Citaat van: roy_043 op di 23 11 2010, 13:36:00
HofCAD was iets sneller...
Alweer!!!!! :twisted: :twisted: :vreegoe:
De versie van Roy_043 tekent de pl op de goede laag en houd de laag die voor de aanroep van het programma actief was ook actief, die van Hofcad niet, is verder niet zo'n probleem.
Beide code's maken de linetype 'hidden2' wel aan, maar zetten de linetype bylayer en niet op hidden2.
Wel wordt een stippellijn getekend, maar het is een hele fijne, en moet eerst zelf nog een keer de linetype hidden2 laden, dan gaat het wel goed.
Werkt het bij jullie wel, doe ik dus misschien iets fout?
Met vriendelijke groet, Marcel..
Citaat van: marcelmaas op di 23 11 2010, 15:23:31...maar het is een hele fijne, en moet eerst zelf nog een keer de linetype hidden2 laden, dan gaat het wel goed.
Kan het zijn dat de instelling voor MEASUREMENT verkeerd staat...? Dat zou slecht zijn want het getuigt van een een verkeerd gebruik van templates.
Citaat van: marcelmaas op di 23 11 2010, 15:23:31zetten de linetype bylayer en niet op hidden2.
Uit een vorig bericht moet geconcludeerd worden dat jij een laag wilt aanmaken met als lijntype HIDDEN2. Beide :D lisps doen dit. Nu lijkt het of zowel de laag als de polylijn zelf dat lijntype moeten krijgen. Dat is onlogisch.
Citaat van: marcelmaas op di 23 11 2010, 15:23:31
De versie van Roy_043 tekent de pl op de goede laag en houd de laag die voor de aanroep van het programma actief was ook actief, die van Hofcad niet, is verder niet zo'n probleem.
Beide code's maken de linetype 'hidden2' wel aan, maar zetten de linetype bylayer en niet op hidden2.
Wel wordt een stippellijn getekend, maar het is een hele fijne, en moet eerst zelf nog een keer de linetype hidden2 laden, dan gaat het wel goed.
Werkt het bij jullie wel, doe ik dus misschien iets fout?
Met vriendelijke groet, Marcel..
Beste Marcel,
Een alternatief voor mijn vorige versie:
(defun c:PL40 (/ oldCmdecho oldPlinewid oldClayer oldCelweight)
(setq oldCelweight (getvar 'CELWEIGHT))
(setq oldClayer (getvar 'CLAYER))
(setq oldPlinewid (getvar 'PLINEWID))
(setq oldCmdecho (getvar 'CMDECHO))
(setvar 'CELWEIGHT -1)
;(setvar 'CECOLOR "ByLayer")(setvar 'CELTYPE "ByLayer")
(setvar 'PLINEWID 40)
(setvar 'CMDECHO 0)
(setq Lay "HCKP_SONOREX"
ColLay "4"
LtLay "HIDDEN2"
LwLay 0.25
)
(if (not (tblsearch "LTYPE" LtLay))
(command "_.LINETYPE" "_L" LtLay "acadiso.lin" "")
)
(if (not (tblsearch "LAYER" Lay))
(command "_.LAYER" "_M" Lay "_C" ColLay "" "_L" LtLay "" "_LW" LwLay "" "")
(command "_.LAYER" "_T" Lay "_ON" Lay "_S" Lay "")
)
(setvar 'CMDECHO 1) ; of (setvar 'CMDECHO oldCmdecho)
(Command "_.PLINE")
(While (eq 1 (logand 1 (getvar 'CMDACTIVE)))
(command pause)
)
(setvar 'CELWEIGHT oldCelweight)
(setvar 'CLAYER oldClayer)
(setvar 'PLINEWID oldPlinewid)
(princ)
)
of
(defun c:PL40 (/ oldCmdecho oldExpert oldPlinewid oldClayer oldCelweight)
(setq oldCelweight (getvar 'CELWEIGHT))
(setq oldClayer (getvar 'CLAYER))
(setq oldPlinewid (getvar 'PLINEWID))
(setq oldCmdecho (getvar 'CMDECHO))
(setq oldExpert (getvar 'EXPERT))
(setvar 'CELWEIGHT -1)
;(setvar 'CECOLOR "ByLayer")(setvar 'CELTYPE "ByLayer")
(setvar 'PLINEWID 40)
(setvar 'CMDECHO 0)
(setq Lay "HCKP_SONOREX"
ColLay "4"
LtLay "HIDDEN2"
LwLay 0.25
)
(setvar 'EXPERT 3)
(command "_.LINETYPE" "_L" LtLay "acadiso.lin" "")
(setvar 'EXPERT oldExpert)
(if (not (tblsearch "LAYER" Lay))
(command "_.LAYER" "_M" Lay "_C" ColLay "" "_L" LtLay "" "_LW" LwLay "" "")
(command "_.LAYER" "_T" Lay "_ON" Lay "_S" Lay "")
)
(setvar 'CMDECHO 1) ; of (setvar 'CMDECHO oldCmdecho)
(Command "_.PLINE")
(While (eq 1 (logand 1 (getvar 'CMDACTIVE)))
(command pause)
)
(setvar 'CELWEIGHT oldCelweight)
(setvar 'CLAYER oldClayer)
(setvar 'PLINEWID oldPlinewid)
(princ)
)
Ik ben het met met roy_043 in het bovenstaande bericht volkomen eens.
Als je in mijn ogen wil knoeien "door niet 'ByLayer' te werken", dan kun
je met de AutoCAD variabelen: CECOLOR, CELTYPE, CELWEIGHT de setting
van de laag overrulen.
Ik zelf doe dit alleen soms in blockdefinities.
In mijn programma ga ik er dus van uit dat CECOLOR en CELTYPE al 'ByLayer'
staan, en ook zo blijven.
Als je met Format->Linetype... of met het Commando LINETYPE met
het knopje Load... een lijntype laadt, staat er dan bij 'File'
het bestand 'acad.lin' of 'acadiso.lin' (maw staat MEASUREMENT wel op 1).
Staat de AutoCAD variabele MEASUREINIT op 1.
Met vriendelijke groet, HofCAD CSI.
PS Via AI_EDITCUSTFILE acad.lin en AI_EDITCUSTFILE acadiso.lin kan men nagaan:
Dat in acad.lin de definitie voor HIDDEN2 is:
*HIDDEN2,Hidden (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A,.125,-.0625
En dat in acadiso.lin de definitie voor HIDDEN2 is:
*HIDDEN2,Hidden (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A, 3.175, -1.5875
Dus een faktor van 25.4
@hofcad
Mijn measurement staat op 1, dus dat is goed.
Bij file in linetype staat "acadiso.lin"
En als ik jou laatste code gebruik in een nieuwe lege tekening dan wordt na activering van de code wel hidden2 geladen maar de line wordt bylayer getekend en die is niet gestreept, pas als ik de lijn selecteer en hidden2 aan klik dan wordt hij gestreept.
Als ik eerlijk ben snap ik ook niet precies wat het verschil is tussen de laag op bylayer en de line op bylayer zetten waar jullie het over hebben.
Wij willen in ieder geval op deze laag de ene keer hidden2 en de andere keer hidden gebruiken als linetype, dus misschien moet dan de layer op bylayer en de laag op hidden2, als ik het goed begrijp.
Citaat van: marcelmaas op wo 24 11 2010, 10:57:21laag op bylayer
:vraagteken:
Een entiteit (lijn, cirkel etc.) kan voor de eigenschap lijntype de waarde "bylayer" hebben. Voor de layer zelf is "bylayer" nooit van toepassing. Als je deze belangrijke materie nog niet helemaal onder de knie hebt, dan raad ik je aan een goede AutoCAD-cursus te gaan volgen of een goed lesboek door te nemen... :mrgreen:
Citaat van: marcelmaas op wo 24 11 2010, 10:57:21
een nieuwe lege tekening
Post deze lege tekening eens.
Citaat van: marcelmaas op wo 24 11 2010, 10:57:21
de ene keer hidden2 en de andere keer hidden gebruiken als linetype
Geef wat meer achtergrondinformatie:
In dezelfde tekening of in verschillende tekeningen? Tegelijkertijd? Schaalafhankelijk?
CiteerGeef wat meer achtergrondinformatie:
In dezelfde tekening of in verschillende tekeningen? Tegelijkertijd? Schaalafhankelijk?
We willen in een tekening op de laag "HCKP_SONOREX" een polylijn kunnen tekenen die de linetype hidden2 heeft, en tegelijk in dezelfde tekening soms op dezelfde laag een polylijn met een linetype hidden.
Dus met de lisp willen we een polylijn tekenen die als linetype hidden2 heeft, en zo dat we die kunnen zelf handmatig kunnen omzetten naar hidden als dat nodig is.
Jouw lege tekening is allerminst leeg. De tekening bevat een complete lagenstructuur. Het programma van HofCAD kijkt of de laag "HCKP_SONOREX" al bestaat en alleen als dat niet zo is wordt de laag met het juiste lijntype aangemaakt. Bestaat de laag al wel dan wordt deze slechts geactiveerd. En dat is natuurlijk een zinnige programmastructuur.
Uit het feit dat alle lagen in de lege tekening het lijntype continuous hebben, concludeer ik dat jullie hebben besloten om het lijntype vast te leggen op het niveau van de entiteiten. In veel bedrijven is dat principieel verboden, maar dat terzijde.
Mijn nieuwe lisp:
(defun c:PL40 ( / oldCeltype oldCelweight oldClayer oldPlinewid lay lType)
(setq oldCeltype (getvar 'celtype))
(setq oldCelweight (getvar 'celweight))
(setq oldClayer (getvar 'clayer))
(setq oldPlinewid (getvar 'plinewid))
(setq lay "HCKP_SONOREX")
(setq lType "HIDDEN2")
(setvar 'cmdecho 0)
(if (not (tblsearch "LAYER" lay))
(vl-cmdf "_.layer" "_new" lay "")
)
(vl-cmdf
"_.layer"
"_on" lay
"_thaw" lay
"_unlock" lay
"_color" 4 lay ; deze regel eventueel weglaten
"_ltype" lType lay ; deze regel eventueel weglaten
"_lweight" 0.25 lay ; deze regel eventueel weglaten
""
)
(if (not (tblsearch "LTYPE" lType))
(vl-cmdf "_.linetype" "_load" lType "" "")
)
(setvar 'cmdecho 1)
(setvar 'celtype lType)
(setvar 'celweight -1)
(setvar 'clayer lay)
(setvar 'plinewid 40)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'celtype oldCeltype)
(setvar 'celweight oldCelweight)
(setvar 'clayer oldClayer)
(setvar 'plinewid oldPlinewid)
(princ)
)
Roy_043
Wat is er fout aan het gebruik van de linetype continuous?
Dat is toch een doorgetrokken lijn, welke linetype zouden we anders moeten gebruiken.
Ik denk dat ik je anders niet helemaal goed begrijp.
Maar ook in jou nieuwe routine krijg ik weer een hele fijne stippellijn, en krijg hem pas normaal als ik de linetype hidden2 opnieuw heb geladen en gedefineerd.
Citaat van: marcelmaas op wo 24 11 2010, 15:12:08
Wat is er fout aan het gebruik van de linetype continuous?
Helemaal niets. Maar er zijn maar weinig bedrijven met een lagenstructuur met 59 lagen die allemaal het lijntype continuous hebben. Veel bedrijven geven er principieel de voorkeur aan om entiteiten te tekenen met "alles" bylayer. Kleur, lijntype etc. worden dan overgenomen van de laag en zijn (naderhand) gemakkelijker te wijzigen.
Ten behoeve van verdere analyse:
- Werkt een regen ook i.p.v. het opnieuw laden van het lijntype?
- Controleer (ten overvloede) Measurement.
- Controleer of het lijntype HIDDEN2 niet per ongeluk al in de tekening zit (zit overigens niet in de tekening Blanco).
- Als je het command -LINETYPE (met streepje) uitvoert, welk lin-bestand wordt dan gebruikt?
- Controleer alle lin-bestanden.
- Vervang deze regel in de laatste lisp:
(vl-cmdf "_.linetype" "_load" lType "" "")
door:
(vl-cmdf "_.linetype" "_load" lType "acadiso.lin" "")
- Idem, maar dan met het volledige pad naar "acadiso.lin".
Als je de oplossing niet vindt, post dan een Voor.dwg en een Na.dwg, opgeslagen respectievelijk voor en na het opnieuw inladen van het lijntype.
- een regen werkt niet zonder meer, maar nadat ik de linetype opnieuw heb geladen moet ik nog wel een regen doen om de stippellijn goed in beeld te krijgen.
- Measurement staat gewoon op 1.
- hidden2 komt niet voor in de tekening waar ik mee start.
-met -linetype en daarna ? staat als standaard ''acadiso.lin" geselecteerd.
- de lisp regel vervangen en nog geen ander resultaat.
Dus heb ik beide voor en na dwg's bijgevoegd, zodat je in de 'voor' tekening kunt zien hoe mijn tekening eruit ziet nadat ik de lisp heb gebruikt, en in de 'na' tekening hoe hij eruit ziet nadat de linetype heb gereload en geregenereerd.
Analyse lijntypes:
Voor.dwg:
(
(-1 . <Entity name: 022d3848>)
(0 . "LTYPE")
(5 . "57734")
(330 . <Entity name: 1079d510>)
(100 . "AcDbSymbolTableRecord")
(100 . "AcDbLinetypeTableRecord")
(2 . "HIDDEN2")
(70 . 0)
(3 . "Hidden (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _")
(72 . 65)
(73 . 2)
(40 . 0.1875)
(49 . 0.125)
(74 . 0)
(49 . -0.0625)
(74 . 0)
)
Na.dwg:
(
(-1 . <Entity name: 104965b8>)
(0 . "LTYPE")
(5 . "57734")
(330 . <Entity name: 10359400>)
(100 . "AcDbSymbolTableRecord")
(100 . "AcDbLinetypeTableRecord")
(2 . "HIDDEN2")
(70 . 0)
(3 . "Hidden (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _")
(72 . 65)
(73 . 2)
(40 . 4.7625)
(49 . 3.175)
(74 . 0)
(49 . -1.5875)
(74 . 0)
)
De conclusie is dat, inderdaad :wink:, in eerste instantie HIDDEN2 uit acad.lin wordt geladen en niet uit acadiso.lin. Waarbij ik ervan uitga dat er niet met lin-bestanden is gerommeld...
Dit is erg vreemd!
Ik heb nog één mogelijke oplossing:
Als je deze regel, in jouw "lege" tekening, kopieert naar de commando-regel wordt het correcte lijntype dan wel geladen?:
(vla-load (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object))) "hidden2" "acadiso.lin")
Als dat geen oplossing biedt dan gedraagt Acad zich niet zoals verwacht of is er toch iets mis met de lin-bestanden. (Meerdere lin-bestanden met dezelfde naam maar een verschillende inhoud? Op verschillende plaatsen?)
Ik krijg de volgende melding als ik de tekst in de command regel plak en op enter druk.
Command: (vla-load (vla-get-linetypes (vla-get-activedocument
(vlax-get-acad-object))) "hidden2" "acadiso.lin")
; error: no function definition: VLAX-GET-ACAD-OBJECT
Citaat van: marcelmaas op do 25 11 2010, 10:21:14
Ik krijg de volgende melding als ik de tekst in de command regel plak en op enter druk.
Command: (vla-load (vla-get-linetypes (vla-get-activedocument
(vlax-get-acad-object))) "hidden2" "acadiso.lin")
; error: no function definition: VLAX-GET-ACAD-OBJECT
Gebruik in een tekening waar HIDDEN2 nog niet geladen is:
(vl-load-com)
(vla-load (vla-get-linetypes (vla-get-activedocument
(vlax-get-acad-object))) "hidden2" "acadiso.lin")
Met vriendelijke groet, HofCAD CSI.
PS In acadiso.lin is de definitie voor HIDDEN2:
*HIDDEN2,Hidden (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A, 3.175, -1.5875
Dat betekent dat als de LTSCALE op 1 staat: een streepje 3.175 lang is
en de openruimte 1.5875 lang is.
Je annotatieve schaal is 1:50 en daarom is alles in de Na.dwg 50X zo groot.
Als ik met mijn PL40 programma een polylijn teken bij een annotatieve schaal van 1:1,
dan tekent hij deze met de juiste HIDDEN2.
Als ik daarna de annotatieve schaal naar 1:50 verander en REGEN geef,
dan is hij bij mij aangepast.
Hofcad,
Nadat ik jou laatste 3 regels code op command regel heb geplakt en daarna enter wordt de goede hidden2 geladen, als ik daarna de lisp pl40 gebruik dan werkt het allemaal goed.
De polylijn wordt gestippeld getekend op de goede laag, dus zoals de bedoeling was.
Maar ik begrijp inmiddels wat jullie bedoelde met bylayer tekenen, dat is inderdaad wel onze bedoeling.
Dus zouden we nog een andere laag aan moeten maken voor de linetype 'hidden' om daarop de andere variant te kunnen tekenen met een iets andere stippellijn.
@ HofCAD goed gezien: (vl-load-com) ontbrak in mijn vorige lisp.
@ marcelmaas
Er zat eigenlijk een fout in mijn vorige lisp. Het lijntype moet logischerwijs eerder geladen worden. Hieronder een verbeterde versie (misschien nog interessant om mee te testen):
(defun c:PL40 ( / oldCeltype oldCelweight oldClayer oldPlinewid lay lType)
(setq oldCeltype (getvar 'celtype))
(setq oldCelweight (getvar 'celweight))
(setq oldClayer (getvar 'clayer))
(setq oldPlinewid (getvar 'plinewid))
(setq lay "HCKP_SONOREX")
(setq lType "HIDDEN2")
(setvar 'cmdecho 0)
(if (not (tblsearch "LTYPE" lType))
(vl-cmdf "_.linetype" "_load" lType "acadiso.lin" "")
)
(if (not (tblsearch "LAYER" lay))
(vl-cmdf "_.layer" "_new" lay "")
)
(vl-cmdf
"_.layer"
"_on" lay
"_thaw" lay
"_unlock" lay
"_color" 4 lay ; deze regel eventueel weglaten
"_ltype" lType lay ; deze regel eventueel weglaten
"_lweight" 0.25 lay ; deze regel eventueel weglaten
""
)
(setvar 'cmdecho 1)
(setvar 'celtype lType)
(setvar 'celweight -1)
(setvar 'clayer lay)
(setvar 'plinewid 40)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'celtype oldCeltype)
(setvar 'celweight oldCelweight)
(setvar 'clayer oldClayer)
(setvar 'plinewid oldPlinewid)
(princ)
)
Tenslotte mijn laatste (?) versie die gebruikmaakt van vla-load. Er zijn 2 commando's PL40HID en PL40HID2 (zelf aanpassen):
(defun PLwWidth (width layer color lType lWeight / oldCeltype oldCelweight oldClayer oldPlinewid)
(setq oldCeltype (getvar 'celtype))
(setq oldCelweight (getvar 'celweight))
(setq oldClayer (getvar 'clayer))
(setq oldPlinewid (getvar 'plinewid))
(if (not (tblsearch "LTYPE" lType))
(progn
(vl-load-com)
(vla-load (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object))) lType "acadiso.lin")
)
)
(setvar 'cmdecho 0)
(if (not (tblsearch "LAYER" layer))
(vl-cmdf "_.layer" "_new" layer "")
)
(vl-cmdf
"_.layer"
"_on" layer
"_thaw" layer
"_unlock" layer
"_color" color layer ; waarde wordt telkens oveschreven, deze regel daarom eventueel weglaten
"_ltype" lType layer ; idem
"_lweight" lWeight layer ; idem
""
)
(setvar 'cmdecho 1)
(setvar 'celtype "ByLayer")
(setvar 'celweight -1) ; is ByLayer
(setvar 'clayer layer)
(setvar 'plinewid 40)
(vl-cmdf "_.pline")
(while (/= 0 (getvar 'cmdactive))
(vl-cmdf pause)
)
(setvar 'celtype oldCeltype)
(setvar 'celweight oldCelweight)
(setvar 'clayer oldClayer)
(setvar 'plinewid oldPlinewid)
(princ)
)
(defun c:PL40HID () (PLwWidth 40 "HCKP_SONOREX_HIDDEN" 4 "HIDDEN" 0.25))
(defun c:PL40HID2 () (PLwWidth 40 "HCKP_SONOREX_HIDDEN2" 4 "HIDDEN2" 0.25))
@roy_043
Jou laatste versie :wink: werkt helemaal goed.
De beide programma's werken zoals gewenst, met de verschillende lagen en linetype's dus idd je laatste versie is een feit.!!!
Mag ik jullie beide hartelijk danken hiervoor..!!! :ole: :vreegoe: :vreegoe: :vreegoe:
Als ik alles overloop dan krijg ik het vermoeden dat AutoCAD bij het layer commando de lijntypes altijd laadt uit acad.lin. Ongeacht de instelling voor MEASUREMENT.
Citaat van: roy_043 op do 25 11 2010, 13:56:41
Als ik alles overloop dan krijg ik het vermoeden dat AutoCAD bij het layer commando de lijntypes altijd laadt uit acad.lin. Ongeacht de instelling voor MEASUREMENT.
Beste Roy_043,
Als je mijn programma's PL40 gebruikt dan krijg ik altijd al de HIDDEN2 uit acadiso.lin
Dat controleer ik door de lengte van een streepje op te meten, en die is bij mij
met een LTSCALE van 1 heel netjes 3.175.
De opmerking 'bij het layer commando de lijntypes altijd laadt uit acad.lin' snap ik niet
want in de dialoogbox van LAYER kun je kiezen tussen acad.lin en acadiso.lin.
Waarschijnlijk bedoel je bij het commando -LAYER en dan de situatie dat het
lijntype niet geladen is.
Maar dat geldt bij mij ook niet, want ook dan is bij mij met een LTSCALE van 1
het streepje heel netjes 3.175.
Met vriendelijke groet, HofCAD CSI.
Citaat van: HofCAD op do 25 11 2010, 14:11:44
commando -LAYER
Klopt.
Citaat van: HofCAD op do 25 11 2010, 14:11:44
en dan de situatie dat het lijntype niet geladen is.
Dat ligt erg voor de hand, dus dat klopt ook.
Conclusie: Het blijft een raadsel? Versie afhankelijk?