FastFiber

Foutmelding: Overschrijven ve bestaand document

Gestart door thomas151283, ma 11 04 2005, 14:55:56

Vorige topic - Volgende topic

thomas151283

Dat ik bij het commando INSERT  s1 s2 s3 s4 s1 s2 s3 s4 moet gebruiken,
is door jezelf uitgelokt.
Want je hebt er voor gekozen om bij de attribuutdefinitie VERIFY te
gebruiken, en dan vewacht AutoCAD ook een bevestiging van je invoerwaarden.


Beste HofCAD,

De attribuutdefinitie wordt toch wel geverifieerd wanneer het wblock wordt geïnserteerd ? Of heb ik het mis voor?
Bij het inserteren komt er toch een dialoogscherm op het scherm waarin de values moeten ingevuld worden. => Dit is toch het definiëren van de attribuutdefinities ????

MVG,
Thomas

HofCAD

Citaat van: thomas151283Dat ik bij het commando INSERT  s1 s2 s3 s4 s1 s2 s3 s4 moet gebruiken,
is door jezelf uitgelokt.
Want je hebt er voor gekozen om bij de attribuutdefinitie VERIFY te
gebruiken, en dan vewacht AutoCAD ook een bevestiging van je invoerwaarden.


Beste HofCAD,

De attribuutdefinitie wordt toch wel geverifieerd wanneer het wblock wordt geïnserteerd ? Of heb ik het mis voor?
Bij het inserteren komt er toch een dialoogscherm op het scherm waarin de values moeten ingevuld worden. => Dit is toch het definiëren van de attribuutdefinities ????

MVG,
Thomas

Beste Thomas,

Als je met het commando ATTDEF(dialoogboxvorm) of met het commando
-ATTDEF(commandoregelvorm) een attribuutdefinitie tekent bepaal
je al of later het attribuut onzichtbaar, constant, verify of preset heeft.
Met de AutoCAD variabele AFLAGS kun je in feite een voorinstelling maken voor de attribuutdefinitie.
Dus de definitie bepaalt hoe het gedrag is bij het invoegen, van een block
of een 'wblock'(een tekening met attributen).
Dus als je kiest voor Verify (setvar "AFLAGS" 4) dan zal bij het invoegen twee keer om de invoerwaarde per attribuut gevraagd worden.
Kies je niet voor Verify (setvar "AFLAGS" 0) dan wordt er slechts een keer
om een invoerwaarde per attribuut gevraagd worden.
Het gedrag bij het invoegen kan ook nog beinvloed worden door de
AutoCAD variabelen ATTDIA, ATTREQ en ATTMODE.
Ik ben er vanuit gegaan dat o.a. ATTDIA bij je op 0 staat, want je hebt
binnen je LISP-programma geen controle over de dialoogbox van ATTEDIT of van EATTEDIT.

Kijk ook eens in de Help bij Contents in de rubriek Command Reference
onder Commands bij ATTDEF en bijv. bij System Variables onder AFLAGS.

Groetjes HofCAD CSI

AFLAGS System Variable

Type: Integer
Not saved
Initial value: 0



Sets attribute flags for ATTDEF bitcode. The value is the sum of the following:


0 No attribute mode selected

1 Invisible

2 Constant

4 Verify

8 Preset



ATTMODE System Variable


Type: Integer
Saved in: Drawing
Initial value: 1

Controls display of attributes.


0 Off: Makes all attributes invisible

1 Normal: Retains current visibility of each attribute: visible attributes are displayed; invisible attributes are not

2 On: Makes all attributes visible



ATTDIA System Variable

Type: Integer
Saved in: Registry
Initial value: 0

Controls whether the INSERT command uses a dialog box for attribute value entry. See INSERT Command Line.


0 Issues prompts on the command line

1 Uses a dialog box


ATTREQ System Variable


Type: Integer
Saved in: Registry
Initial value: 1

Determines whether the INSERT command uses default attribute settings during insertion of blocks.


0 Assumes the defaults for the values of all attributes

1 Turns on prompts or dialog box for attribute values, as specified by ATTDIA
ACADcadabra

thomas151283

Aan HofCAD,

Het mag gezegd worden hé; ge zijt goed jong !!

Straks ga ik de werking van AutoCAD nog snappen :lol:

Hartelijk dank!

MVG, Thomas

PS: kzou toch niet te ver gaan lopen moest ik van u zijn; ik kga eerst zelf nog wa proberen. Maar de kans is toch groot dat ik u (jullie) straks toch terug nodig heb!  :wink:

HofCAD

Citaat van: thomas151283Aan HofCAD,

Het mag gezegd worden hé; ge zijt goed jong !!


Beste Thomas,

Na zo'n kreet van je, kon ik het niet nalaten om nog eens naar je
programma te kijken.
Er zaten nog 2 foutjes in: nl bij de eerste attribuutdefinitie 1X "" teveel
en (command "regen" "all") is (command "regenall").
Verder heb ik nu geregeld dat je programma netjes reageert op
attdia 0 en op attdia 1.(Dus even uitproberen!!!)
Ook heb ik je programma op sommige punten al iets netter gemaakt,
bijv. t.a.v. defaults en cmdecho.

Groetjes HofCAD CSI



(defun c:attpl3 (/ ~cmd ~afl ~atr NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
(setq ~cmd (getvar "CMDECHO") ~afl (getvar "AFLAGS") ~atr (getvar "ATTREQ"))
(setvar "CMDECHO" 0)(setvar "ATTMODE" 1)(setvar "ATTREQ" 1)
;;; style maakt een nieuwe tekststijl aan: genaamd "attributes"
(command "style" "attributes" "tahoma" "15" "" "" "" "")
;;; layer maakt een nieuw laag aan: genaamd "attributes"
(command "layer" "m" "attributes" "c" "8" "" "")
;;; Selecteren van hoekpunten
(setq lop (getpoint "\nLinker benedenhoekpunt aub.: "))
(setq rbp (getcorner lop "\nRechter bovenhoekpunt aub.: "))
(setq rop (list (car rbp) (cadr lop)))
(setq lbp (list (car lop) (cadr rbp)))
;;; Breedte en Hoogte bepalen
(setq breedte (distance lop rop))
(setq hoogte (distance lop lbp))
(setq afrondbreedte (fix breedte))
(setq afrondhoogte (fix hoogte))
;;; Inserteerpunt Attribute Materiaal (PartMat)
(setq insertmat
(getpoint
"\nDuid een invoegpunt voor de attributes aan aub: "
)
)
(setvar "AFLAGS" 4);Is Verify echt nodig?
;;; Definieren attribuut PartMat
(command "attdef" ""
"PartMat" "Geef de Materiaalsoort op:"
"" insertmat "0"
)
(setq e1 (entlast))
;;; Definieren attribuut PartRef
(command "attdef" ""
"PartRef" "Geef een referentienaam op: ?"
"" ""
)
(setq e2 (entlast))
;;; Definieren attribuut PartL (Lengte =hoogte)
(command "attdef" ""
"PartL" "Geef de hoogte op: "
afrondhoogte ""
)
(setq e3 (entlast))
;;; Definieren attribuut PartW
(command "attdef" ""
"PartW" "Geef de breedte op: "
afrondbreedte ""
)
(setq e4 (entlast))
;;; Maken wblock
(setq NOToke T)
(while NOToke
(setq bestandsnaam
(getstring 7 "\nGeef een bestandsnaam voor het wblock op aub: "))
(setq NOToke nil)
(if (findfile (strcat bestandsnaam ".dwg")) (setq NOToke T))
)
(command "wblock" bestandsnaam "" lop e1 e2 e3 e4 (setq crossing (ssget "c" rop lbp)) "")
;;;;;1)Misschien mag je (setq crossing (ssget "c" rop lbp)) wel laten vervallen?
;;;;;2)Moet je ook niet testen of er in je tekening al een block is
;;;;;  met dezelfde naam?
;insert wblock
(if (= (getvar "ATTDIA") 0)
(progn
(setq NOToke T)
(while NOToke
(setq s1 (getstring "\nGeef de Materiaalsoort op: "))
(setq sh (getstring (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))
(setq NOToke nil)
(if (/= s1 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(setq NOToke T)
(while NOToke
(setq s2 (getstring "\nGeef de Referentienaam op: "))
(setq sh (getstring (strcat "\nGeef nogmaals de Referentienaam <" s2 "> op: ")))
(setq NOToke nil)
(if (/= s2 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(setq NOToke T)
(while NOToke
(setq s3 (getstring (strcat "\nGeef de Hoogte <" (itoa afrondhoogte) "> op: ")))
(if (= s3 "")(setq s3 (itoa afrondhoogte)))
(setq sh (getstring (strcat "\nGeef nogmaals de Hoogte <" s3 "> op: ")))
(setq NOToke nil)
(if (/= s3 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(setq NOToke T)
(while NOToke
(setq s4 (getstring (strcat "\nGeef de Breedte <" (itoa afrondbreedte) ">op: ")))
(if (= s4 "")(setq s4 (itoa afrondbreedte)))
(setq sh (getstring (strcat "\nGeef nogmaals de Breedte <" s4 "> op: ")))
(setq NOToke nil)
(if (/= s4 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(command "insert" bestandsnaam lop "1" "1" "0" s1 s2 s3 s4 s1 s2 s3 s4)
);end progn
(command "insert" bestandsnaam lop "1" "1" "0"));end if
(command "regenall")
(command "zoom" "e")
(setvar "AFLAGS" ~afl)(setvar "ATTREQ" ~atr)(setvar "CMDECHO" ~CMD)
(princ)
)
(princ "\n  ATTPL3 is geladen; Start met ATTPL3 bij Attdia= 0 of 1")(princ)
ACADcadabra

thomas151283

Beste HofCAD CSI,

Eerst en vooral wil ik zeggen dat ik even de kluts kwijt ben, over het feit dat er nog mensen zijn die zich probleemloos en met volle moed inzetten om een ander te helpen! (THANKS !!)


=> HofCAD schreef:

(setvar "AFLAGS" 4);Is Verify echt nodig?

Voor mij is dit niet per sé nodig; ik heb dit gewoon gedaan omdat ik op deze manier zeker ben dat ik de attributes min 1x ingeef (deze moeten nl naar Excel om daar een stuklijst te vormen).
Indien u een betere / gemakkelijkere / logischere methode weet: geen probleem.


=> HofCAD schreef:

;;;;;1)Misschien mag je (setq crossing (ssget "c" rop lbp)) wel laten vervallen?

Dit zou best wel kunnen omdat nu elke entiteit én attribuut wordt geselecteerd op punt. Maar ik moet dit nog uittesten



=> HofCAD schreef:

;;;;;2)Moet je ook niet testen of er in je tekening al een block is
;;;;; met dezelfde naam?

Hier had ik ook al aan zitten denken, maar wederom is het probleem dat ik niet weet hoe  :oops:



Verder zou ik graag ook een tip geven (maar ik vermoed dat ge die al kent)

U schrijft:

(setq sh (getstring (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))

Wanneer u dit schrijft:

(setq sh (getstring 7 (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))

kan je spaties ingeven in de bestandsnaam.
(7 zorgt ervoor dat je spaties kan ingeven)

Verder ben ik nieuwsgierig naar de bronnen waar jij al uw wijsheid hebt opgedaan ivm Lisp-programmatie.


Hartelijk dank voor de reeds gedane moeite,
Indien binnen 5 weken blijkt dat ik een positieve beoordeling krijg op mijn stage zal dit grotendeels te danken zijn uw (jullie) hulp!!!

Met vriendelijke groet,
Thomas

HofCAD

Citaat van: thomas151283Beste HofCAD CSI,

Eerst en vooral wil ik zeggen dat ik even de kluts kwijt ben, over het feit dat er nog mensen zijn die zich probleemloos en met volle moed inzetten om een ander te helpen! (THANKS !!)
Thomas

=> HofCAD schreef:

(setvar "AFLAGS" 4);Is Verify echt nodig?

Voor mij is dit niet per sé nodig; ik heb dit gewoon gedaan omdat ik op deze manier zeker ben dat ik de attributes min 1x ingeef (deze moeten nl naar Excel om daar een stuklijst te vormen).
Indien u een betere / gemakkelijkere / logischere methode weet: geen probleem.

=> HofCAD antwoordt:

Als U (setvar "AFLAGS" 4)  verandert in (setvar "AFLAGS" 0) zal AutoCAD
de vraag van de invoerwaarden slechts eenmaal per attribuut stellen.
Natuurlijk moet U dan ook
(command "insert" bestandsnaam lop "1" "1" "0" s1 s2 s3 s4 s1 s2 s3 s4)
in
(command "insert" bestandsnaam lop "1" "1" "0" s1 s2 s3 s4)
veranderen.
Het is dan niet perse nodig om het vraagspelletje voor het invoegen te
veranderen.


=> HofCAD schreef:

;;;;;1)Misschien mag je (setq crossing (ssget "c" rop lbp)) wel laten vervallen?

Dit zou best wel kunnen omdat nu elke entiteit én attribuut wordt geselecteerd op punt. Maar ik moet dit nog uittesten

=> HofCAD antwoordt:

Inplaats van (setq crossing (ssget "c" rop lbp)) had je ook mogen
schrijven  (ssget "c" rop lbp)
Ik weet niet of je in 'wblock' naast je attributen ook nog andere entiteiten
(objecten) wil hebben, zoniet dan mag de regel veranderd worden in
(command "wblock" bestandsnaam "" lop e1 e2 e3 e4 "")


=> HofCAD schreef:

;;;;;2)Moet je ook niet testen of er in je tekening al een block is
;;;;; met dezelfde naam?

Hier had ik ook al aan zitten denken, maar wederom is het probleem dat ik niet weet hoe  :oops:

=> HofCAD antwoordt:
Dit moet men doen met
(if (not (tblsearch "BLOCK" bloknaam))
(progn

))

Maar pas op want als bijv.: bestandsnaam = "c:\\tek\\blokje" dan moet
bloknaam = "blokje" zijn.
Dat wordt dus lekker strippen!!!!!!!!!!!!!
:roll:
 
Verder zou ik graag ook een tip geven (maar ik vermoed dat ge die al kent)

=> HofCAD schreef:

(setq sh (getstring (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))

Wanneer u dit schrijft:

(setq sh (getstring 7 (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))

kan je spaties ingeven in de bestandsnaam.
(7 zorgt ervoor dat je spaties kan ingeven)

=> HofCAD antwoordt:

Zoals U waarschijnlijk reeds weet, kijk ik veel naar de helpbestanden van
AutoCAD en bij getstring staat:

(getstring [cr] [msg])
Arguments

cr

If supplied and not nil, this argument indicates that users can include blanks in their input string (and must terminate the string by pressing ENTER). Otherwise, the input string is terminated by entering a space or pressing ENTER.

msg

A string to be displayed to prompt the user.


Dus daar hoeft helemaal geen 7 te staan, als er maar iets staat wat niet gelijk aan nil is.
Verder wil ik me graag aan de oude DOS-standaard houden bij de namen
van files of bestanden, omdat als ik iets voor mezelf schrijf het liefst zo dat het compatibel is met AutoCAD Release 10.
(Archeologen zullen er later gek van worden)


=> Thomas schreef:
Verder ben ik nieuwsgierig naar de bronnen waar jij al uw wijsheid hebt opgedaan ivm Lisp-programmatie.


=> HofCAD antwoordt:

Als dom blondje(volgens Bart ben ik niet meer kaal :lol:) heb ik altijd te
behoefte gehad, om me te meten met mensen die bruine of zwarte
haren hebben; vandaar mijn motivatie.
Er was vroeger :ween:  een goed nederlands AutoCADboek voor
AutoCAD R10 en 2 beroemde dikke pillen van George Ohurma of was het
O'Head (of zo iets) voor AutoCAD R12, en daar heb ik door zelfstudie
veel van geleerd.
Maar ik had vroeger nog leraren die sloegen als je niet oplette :cry: ,
en daar heb ik van leren programeren in het middeleeuwse Algol60. :shock:
Verder heb ik veel gekeken naar LISP-programma's en Help-files die al
vanuit Release 2.5 tot AutoCAD 2006 in de AutoCADdirectory staan, en
verder zijn er diverse sites http://www.afralisp.com/ met tutorials
en LISP-programma's waarmee je kunt verrijken. :idea:
Verder is het natuurlijk ook een kwestie van inspiratie: als ik kijk
naar de serie Crime Scene Investigation met zekere heer Grissum,
dan wil ik in
Cad Scene Investigation net zo goed worden. :oops:
Waarbij natuurlijk geldt 1% inspiratie en 99% transpiratie. :twisted:
Daarnaast komt nog, zoals mijn naam reeds doet vermoeden, dat ik
hofleverancier wil worden in CAD problemen en oplossingen.
Aangezien ik echter van zoveel koningshuizen aanbiedingen heb,
kan ik daar op dit moment nog geen uitspraken over doen. 8)


=> HofCAD vraagt:

Gebruik je de aangemaakte 'Wblocks' eigenlijk wel in een andere tekening?
Indien ja, dan oke maar anders moet je het commando BLOCK
gebruiken.
(Overigens er bestaan helemaal geen wblocks :lol:  :lol:  :lol:  :lol:  :lol: :lol:,
de naam komt voort uit het feit dat je heel vroeger alleen maar een block
naar een tekening kon exporteren; Write block gaf het commando de
naam WBLOCK. )

Hopelijk U hiermee voldoende geinformeerd te hebben, verblijf ik.

HofCAD
CSI

PS1 Is er voor een techneut leven mogelijk zonder AutoCAD?
PS2 Mocht je de kluts nog steeds kwijt zijn, in de keuken kom ik de mijne
regelmatig tegen.


http://www.autocadforum.com/autocadforum/viewtopic.php?t=68
ACADcadabra

HofCAD

Citaat van: HofCAD
Citaat van: thomas151283Beste HofCAD CSI,

Eerst en vooral wil ik zeggen dat ik even de kluts kwijt ben, over het feit dat er nog mensen zijn die zich probleemloos en met volle moed inzetten om een ander te helpen! (THANKS !!)
Thomas

=> HofCAD schreef:

(setvar "AFLAGS" 4);Is Verify echt nodig?

Voor mij is dit niet per sé nodig; ik heb dit gewoon gedaan omdat ik op deze manier zeker ben dat ik de attributes min 1x ingeef (deze moeten nl naar Excel om daar een stuklijst te vormen).
Indien u een betere / gemakkelijkere / logischere methode weet: geen probleem.

=> HofCAD antwoordt:

Als U (setvar "AFLAGS" 4)  verandert in (setvar "AFLAGS" 0) zal AutoCAD
de vraag van de invoerwaarden slechts eenmaal per attribuut stellen.
Natuurlijk moet U dan ook
(command "insert" bestandsnaam lop "1" "1" "0" s1 s2 s3 s4 s1 s2 s3 s4)
in
(command "insert" bestandsnaam lop "1" "1" "0" s1 s2 s3 s4)
veranderen.
Het is dan niet perse nodig om het vraagspelletje voor het invoegen te
veranderen.


=> HofCAD schreef:

;;;;;1)Misschien mag je (setq crossing (ssget "c" rop lbp)) wel laten vervallen?

Dit zou best wel kunnen omdat nu elke entiteit én attribuut wordt geselecteerd op punt. Maar ik moet dit nog uittesten

=> HofCAD antwoordt:

Inplaats van (setq crossing (ssget "c" rop lbp)) had je ook mogen
schrijven  (ssget "c" rop lbp)
Ik weet niet of je in 'wblock' naast je attributen ook nog andere entiteiten
(objecten) wil hebben, zoniet dan mag de regel veranderd worden in
(command "wblock" bestandsnaam "" lop e1 e2 e3 e4 "")


=> HofCAD schreef:

;;;;;2)Moet je ook niet testen of er in je tekening al een block is
;;;;; met dezelfde naam?

Hier had ik ook al aan zitten denken, maar wederom is het probleem dat ik niet weet hoe  :oops:

=> HofCAD antwoordt:
Dit moet men doen met (tblsearch "BLOCK" bloknaam):
(if (not (tblsearch "BLOCK" bloknaam))
(progn
;;hier komen de programma regels te staan als het block nog niet
;;nog niet bestaat
))

Maar pas op want als bijv.: bestandsnaam = "c:\\tek\\blokje" dan moet
bloknaam = "blokje" zijn.
Dat wordt dus lekker strippen!!!!!!!!!!!!!
:roll:
 
Verder zou ik graag ook een tip geven (maar ik vermoed dat ge die al kent)

=> HofCAD schreef:

(setq sh (getstring (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))

Wanneer u dit schrijft:

(setq sh (getstring 7 (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))

kan je spaties ingeven in de bestandsnaam.
(7 zorgt ervoor dat je spaties kan ingeven)

=> HofCAD antwoordt:

Zoals U waarschijnlijk reeds weet, kijk ik veel naar de helpbestanden van
AutoCAD en bij getstring staat:

(getstring [cr] [msg])
Arguments

cr

If supplied and not nil, this argument indicates that users can include blanks in their input string (and must terminate the string by pressing ENTER). Otherwise, the input string is terminated by entering a space or pressing ENTER.

msg

A string to be displayed to prompt the user.


Dus daar hoeft helemaal geen 7 te staan, als er maar iets staat wat niet gelijk aan nil is.
Verder wil ik me graag aan de oude DOS-standaard houden bij de namen
van files of bestanden, omdat als ik iets voor mezelf schrijf het liefst zo dat het compatibel is met AutoCAD Release 10.
(Archeologen zullen er later gek van worden)
En AutoCad heeft op sommige plaatsen  ook liever de oude stijl.


=> Thomas schreef:
Verder ben ik nieuwsgierig naar de bronnen waar jij al uw wijsheid hebt opgedaan ivm Lisp-programmatie.


=> HofCAD antwoordt:

Als dom blondje(volgens Bart ben ik niet meer kaal :lol:) heb ik altijd te
behoefte gehad, om me te meten met mensen die bruine of zwarte
haren hebben; vandaar mijn motivatie.
Er was vroeger :ween:  een goed nederlands AutoCADboek voor
AutoCAD R10 en 2 beroemde dikke pillen van George Ohurma of was het
O'Head (of zo iets) voor AutoCAD R12, en daar heb ik door zelfstudie
veel van geleerd.
Maar ik had vroeger nog leraren die sloegen als je niet oplette :cry: ,
en daar heb ik van leren programeren in het middeleeuwse Algol60. :shock:
Verder heb ik veel gekeken naar LISP-programma's en Help-files die al
vanuit Release 2.5 tot AutoCAD 2006 in de AutoCADdirectory staan, en
verder zijn er diverse sites http://www.afralisp.com/ met tutorials
en LISP-programma's waarmee je kunt verrijken. :idea:
Verder is het natuurlijk ook een kwestie van inspiratie: als ik kijk
naar de serie Crime Scene Investigation met zekere heer Grissum,
dan wil ik in
Cad Scene Investigation net zo goed worden. :oops:
Waarbij natuurlijk geldt 1% inspiratie en 99% transpiratie. :twisted:
Daarnaast komt nog, zoals mijn naam reeds doet vermoeden, dat ik
hofleverancier wil worden in CAD problemen en oplossingen.
Aangezien ik echter van zoveel koningshuizen aanbiedingen heb,
kan ik daar op dit moment nog geen uitspraken over doen. 8)


=> HofCAD vraagt:

Gebruik je de aangemaakte 'Wblocks' eigenlijk wel in een andere tekening?
Indien ja, dan oke maar anders moet je het commando BLOCK
gebruiken.
(Overigens er bestaan helemaal geen wblocks :lol:  :lol:  :lol:  :lol:  :lol: :lol:,
de naam komt voort uit het feit dat je heel vroeger alleen maar een block
naar een tekening kon exporteren; Write block gaf het commando de
naam WBLOCK. )

Hopelijk U hiermee voldoende geinformeerd te hebben, verblijf ik.

HofCAD
CSI

PS1 Is er voor een techneut leven mogelijk zonder AutoCAD?
PS2 Mocht je de kluts nog steeds kwijt zijn, in de keuken kom ik de mijne
regelmatig tegen.


http://www.autocadforum.com/autocadforum/viewtopic.php?t=68
ACADcadabra

thomas151283

=> HofCAD schreef

Gebruik je de aangemaakte 'Wblocks' eigenlijk wel in een andere tekening?
Indien ja, dan oke maar anders moet je het commando BLOCK
gebruiken.
(Overigens er bestaan helemaal geen wblocks      ,
de naam komt voort uit het feit dat je heel vroeger alleen maar een block
naar een tekening kon exporteren; Write block gaf het commando de
naam WBLOCK. )


Thomas antwoord:
Elke wblock blijft IN de tekening, wordt in geen enkele andere tekening gebruikt. Dus is het gebruik van 'bloks' aangeraden.
Maar de enige reden waarom ik 'wblock' gebruik is het feit dat ik dacht dat attributes enkel konden worden gekoppeld aan 'wblocks'.
Ik heb dit ondertussen uitgetest, en blijkt dat het ook aan 'blocks' kan gekoppeld worden!!  (Waarom heb ik ooit les gekregen over AutoCAD ??? Blijkt dat de helft dat mij  is wijsgemaakt ofwel niet klopt, ofwel pakken beter kan !!)



Verder kan ik u ook vertellen dat sinds ik uw lisp-routine gebruik, AutoCAD nog geen enkele keer is vastgelopen!
Komt er dus op neer dat het bij u iets beter in elkaar zit dan bij mij,  :vreegoe: maar ben nog jong, en ben bereid om veel bij te leren.

Grtz,
Thomas

PS: ik ga nu eerst proberen om in de programmatie het gebruik van 'wblocks' te veranderen naar 'blocks'

thomas151283

Surprise Suprise  :oops:

Zoals voorspeld zit ik weer ergens in de knoop  :(  Het begint een gewoonte te worden.  :cry:

;;; Maken block  
(setq notoke T)
 (while NOToke
   (setq bestandsnaam
      (getstring 7
            "\nGeef een bestandsnaam voor het block op aub: "
      )
   )
   (setq NOToke nil)
   (if   (findfile (strcat bestandsnaam ".dwg"))
;;;      (if (tblsearch "block" bestandsnaam))
     (setq NOToke T)
   )
 )
(command "block"      bestandsnaam
      lop
      e1
      e2
      e3
      e4
      (setq crossing (ssget "c" rop lbp))
      ""
 )


Als ik het rode niet in commentaar plaats, loopt hij daarop vast. (bovenstaande regel wordt dan wel in commentaar geplaatst !)
Lijkt me logisch omdat ik "block" nog niet gedefiniëerd heb.
Maar waar moet dat dan komen ??

MVG,
Thomas

HofCAD

Citaat van: thomas151283Surprise Suprise  :oops:

Zoals voorspeld zit ik weer ergens in de knoop  :(  Het begint een gewoonte te worden.  :cry:
MVG,
Thomas

Beste Thomas,

Ik ben zeker niet slimmer als jij(ik ben blond :oops: ),
maar ik heb waarschijnlijk (doordat ik als Ollander Oude Geuze drink) meer geluk.
Kijk maar eens naar onderstaand programma.

Groetjes HofCAD C SI

(defun c:attpl4 (/ ~cmd ~afl ~atr NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
(setq ~cmd (getvar "CMDECHO") ~afl (getvar "AFLAGS") ~atr (getvar "ATTREQ"))
(setvar "CMDECHO" 0)(setvar "ATTMODE" 1)(setvar "ATTREQ" 1)
;;; style maakt een nieuwe tekststijl aan: genaamd "attributes"
(command "style" "attributes" "tahoma" "15" "" "" "" "")
;;; layer maakt een nieuw laag aan: genaamd "attributes"
(command "layer" "m" "attributes" "c" "8" "" "")
;;; Selecteren van hoekpunten
(setq lop (getpoint "\nLinker benedenhoekpunt aub.: "))
(setq rbp (getcorner lop "\nRechter bovenhoekpunt aub.: "))
(setq rop (list (car rbp) (cadr lop)))
(setq lbp (list (car lop) (cadr rbp)))
;;; Breedte en Hoogte bepalen
(setq breedte (distance lop rop))
(setq hoogte (distance lop lbp))
(setq afrondbreedte (fix breedte))
(setq afrondhoogte (fix hoogte))
;;; Inserteerpunt Attribute Materiaal (PartMat)
(setq insertmat
(getpoint
"\nDuid een invoegpunt voor de attributes aan aub: "
)
)
(setvar "AFLAGS" 4);Is Verify echt nodig?
;;; Definieren attribuut PartMat
(command "attdef" ""
"PartMat" "Geef de Materiaalsoort op:"
"" insertmat "0"
)
(setq e1 (entlast))
;;; Definieren attribuut PartRef
(command "attdef" ""
"PartRef" "Geef een referentienaam op: "
"" ""
)
(setq e2 (entlast))
;;; Definieren attribuut PartL (Lengte =hoogte)
(command "attdef" ""
"PartL" "Geef de hoogte op: "
afrondhoogte ""
)
(setq e3 (entlast))
;;; Definieren attribuut PartW
(command "attdef" ""
"PartW" "Geef de breedte op: "
afrondbreedte ""
)
(setq e4 (entlast))
;;; Maken block
(setq NOToke T)
(while NOToke
(setq blocknaam
(getstring 7 "\nGeef een naam voor het block op aub: "))
(setq NOToke nil)
(if (tblsearch "BLOCK" blocknaam)
(setq NOToke T))
)
(command "block" blocknaam lop e1 e2 e3 e4 (ssget "c" rop lbp) "")
;;;;;1)Misschien mag je (ssget "c" rop lbp) wel laten vervallen?  
;insert block
(if (= (getvar "ATTDIA") 0)
(progn
(setq NOToke T)
(while NOToke
(setq s1 (getstring "\nGeef de Materiaalsoort op: "))
(setq sh (getstring (strcat "\nGeef nogmaals de Materiaalsoort <" s1 "> op: ")))
(setq NOToke nil)
(if (/= s1 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(setq NOToke T)
(while NOToke
(setq s2 (getstring "\nGeef de Referentienaam op: "))
(setq sh (getstring (strcat "\nGeef nogmaals de Referentienaam <" s2 "> op: ")))
(setq NOToke nil)
(if (/= s2 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(setq NOToke T)
(while NOToke
(setq s3 (getstring (strcat "\nGeef de Hoogte <" (itoa afrondhoogte) "> op: ")))
(if (= s3 "")(setq s3 (itoa afrondhoogte)))
(setq sh (getstring (strcat "\nGeef nogmaals de Hoogte <" s3 "> op: ")))
(setq NOToke nil)
(if (/= s3 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(setq NOToke T)
(while NOToke
(setq s4 (getstring (strcat "\nGeef de Breedte <" (itoa afrondbreedte) "> op: ")))
(if (= s4 "")(setq s4 (itoa afrondbreedte)))
(setq sh (getstring (strcat "\nGeef nogmaals de Breedte <" s4 "> op: ")))
(setq NOToke nil)
(if (/= s4 sh) (setq NOToke T))
(if (= sh "")(setq NOToke nil))
)
(command "insert" blocknaam lop "1" "1" "0" s1 s2 s3 s4 s1 s2 s3 s4)
);end progn
(command "insert" blocknaam lop "1" "1" "0"));end if
(command "regenall")
(command "zoom" "e")
(setvar "AFLAGS" ~afl)(setvar "ATTREQ" ~atr)(setvar "CMDECHO" ~CMD)
(princ)
)
(princ "\n ATTPL4 is geladen; Start met ATTPL4 bij Attdia= 0 of 1")(princ)
ACADcadabra