Hoe kan er met lisp een foutmelding geschreven als men van plan is om een bestaand document te overschrijven?
Gebeurt dit adhv if en while?
MVG, Thomas
Overschrijf je een tekening of een text bestand?
Als je mbv Lisp de inhoud van een text bestand wilt wijzigen moet je eerst het bestand openen:
(setq f (open "c:\\my documents\\new.tst" "w"))
De W zorgt ervoor dat de inhoud wordt overschreven.
Gebruik je de A dan wordt de text toegevoegd.
Gebruik je de R dan open het bestand alleen om te lezen.
Bedoeling is vermijden dat een tekening wordt overschreven.
Thomas
Als de tekening niet geopend is moet je als voorwaarde bij de save opdracht meegeven dat de bestandsnaam niet reeds bestaat.
Dit kun je doen met de FINDFILE opdracht.
Deze zoekt in het AutoCAD zoekpad naar een opgegeven bestandsnaam.
(if (/= bestandsnaam (findfile bestandsnaam))
(command "save" bestandsnaam)
(alert "TEKENING BESTAAT REEDS")
)
Joop,
Ik zit een beetje vast; het principe heb ik vast van hoe ik die foutmelding moet programmeren.
Maar het is de bedoeling dat deze erop komt tijdens mijn bewerking.
Misschien zie jij wel hoe het moet, of wat er juist vantussen moet laten.
(defun c:attpl3 ()
;;; 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: "
)
)
(command "attdef" "V" ""
"PartMat" "Geef de Materiaalsoort op: "
"" insertmat "0"
""
)
;;; Inserteren Referentie
(setq insertref
(command
"attdef" "V" ""
"PartRef" "Geef een referentienaam op: "
"" ""
)
)
;;; Inserteren Lengte (=hoogte)
(setq insertl
(command "attdef" "V" ""
"PartL" "Geef de hoogte op: "
afrondhoogte ""
)
)
;;; Inserteren Breedte
(setq insertw
(command "attdef" "V" ""
"PartW" "Geef de breedte op: "
afrondbreedte ""
)
)
;;; Maken wblock
(command "filedia" "1")
(command "wblock"
(setq bestandsnaam
(getstring 7
"\nGeef een bestandsnaam voor het wblock op aub: "
)
)
(if (/= bestandsnaam (findfile bestandsnaam))
(command "save" bestandsnaam)
(alert "Wblock bestaat reeds!")
)
""
lop
;;; basispunt wblock
(setq crossing (ssget "c" rop lbp))
""
);;; Inserteren wblock
(command "insert" bestandsnaam lop "1" "1" "0")
(command "regen" "all")
(command "zoom" "e")
(princ)
)
Daar in het rode gedeelte vermoed ik dat die melding erbij moet.
Grtz Thomas
Citaat van: thomas151283Joop,
Ik zit een beetje vast; het principe heb ik vast van hoe ik die foutmelding moet programmeren.
Maar het is de bedoeling dat deze erop komt tijdens mijn bewerking.
Misschien zie jij wel hoe het moet, of wat er juist vantussen moet laten.
Beste Thomas151283,
Bedoel je de onderstaande gele tekst?
Groetjes HofCAD
CSI.
(defun c:attpl3 ()
;;; 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: "
)
)
(command "attdef" "V" ""
"PartMat" "Geef de Materiaalsoort op: "
"" insertmat "0"
""
)
;;; Inserteren Referentie
(setq insertref
(command
"attdef" "V" ""
"PartRef" "Geef een referentienaam op: "
"" ""
)
)
;;; Inserteren Lengte (=hoogte)
(setq insertl
(command "attdef" "V" ""
"PartL" "Geef de hoogte op: "
afrondhoogte ""
)
)
;;; Inserteren Breedte
(setq insertw
(command "attdef" "V" ""
"PartW" "Geef de breedte op: "
afrondbreedte ""
)
)
;;; 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 "filedia" 0)??????
(command "wblock" bestandsnaam "" lop (setq crossing (ssget "c" rop lbp)) "")
;;(command "filedia" 1)??????;;; Inserteren wblock
(command "insert" bestandsnaam lop "1" "1" "0")
;;;Je moet de values input nog goed verzorgen!!!!!!!!!!!!!!!!!!!!!!(command "regen" "all")
(command "zoom" "e")
(princ)
)
Aan HofCAD CSI
;;Je moet de values input nog goed verzorgen!!!!!!!!!!!!!!!!!!!!!!
Wat bedoel je hier juist mee ? :oops:
Toch al bedankt voor het gele gedeelte; dat was het wat ik nodig had. :vreegoe:
Grtz
Thomas
Citaat van: thomas151283Aan
HofCAD CSI
;;Je moet de values input nog goed verzorgen!!!!!!!!!!!!!!!!!!!!!!
Wat bedoel je hier juist mee ? :oops:
Toch al bedankt voor het gele gedeelte; dat was het wat ik nodig had. :vreegoe:
Grtz
Thomas
Beste Thomas,
De volgorde waarin je invulvragen komen voor je attributen zijn niet
eenduidig bepaald, je moet ze daarom een voor een in de juiste
volgorde selecteren en niet met een crossing.
Ten tweede als je programma runt, dan zie je dat AutoCAD
de uitkomst van (command "regen" "all") en (command "zoom" "e")
dus resp. "all" en "e" ziet als invulwaarden voor je attributen.
Groetjes HofCAD
CS
I
Beste HofCAD
Als antwoord op uw reactie:
1: De volgorde van mijn invulvragen is inderdaad niet eenduidig bepaald, maar aangezien ik mijn attributes via aligning programmeer staan deze altijd mooi onder elkaar. Dus ik heb enkel van mijn bovenste attribute een coördinatiepunt (denk ik toch). Daarom dacht ik dat ik telkens eenzelfde volgorde verkijg door elke keer op dezelfde manier te selecteren.
Ik weet niet of dit de meest optimale werkwijze is, maar ze werkt wel.
2. Beschouwt AutoCAD hetgeen dat tussen "" staat niet als een commando, of vervolg op commando?
Invulwaarden worden toch geschreven en bepaald zonder ""?
Indien in het grandioos mis heb, gelieve me te verbeteren.
Suggesties ter verbetering van kennen en kunnen van lisp zijn steeds welkom.
Dank bij voorbaat
MVG,
Thomas
de volgerde van de attributen is wel is elke keer het zelfde.
namelijk het atrribut dat het eerst wordt gemaakt wordt automatisch het laast geselecteerd bij een crossing
omdat het als het ware onder op in de database staat.
(toeval bestaat niet bij een computer)
de bovenstaande volgorde is te omzeilen door de atributen in een bepaalde volgorde te selecteren bij het aanmaken van een (W)block
Citaat van: thomas151283Beste HofCAD
Als antwoord op uw reactie:
1: De volgorde van mijn invulvragen is inderdaad niet eenduidig bepaald, maar aangezien ik mijn attributes via aligning programmeer staan deze altijd mooi onder elkaar. Dus ik heb enkel van mijn bovenste attribute een coördinatiepunt (denk ik toch). Daarom dacht ik dat ik telkens eenzelfde volgorde verkijg door elke keer op dezelfde manier te selecteren.
Ik weet niet of dit de meest optimale werkwijze is, maar ze werkt wel.
2. Beschouwt AutoCAD hetgeen dat tussen "" staat niet als een commando, of vervolg op commando?
Invulwaarden worden toch geschreven en bepaald zonder ""?
Indien in het grandioos mis heb, gelieve me te verbeteren.
Suggesties ter verbetering van kennen en kunnen van lisp zijn steeds welkom.
Dank bij voorbaat
MVG,
Thomas
Beste Thomas,
Zoals met vele dingen in het leven, ben ik het er niet mee eens.
Maar ja, ik ben blond en volgens Bart zelfs kaal. :evil:
Zelfs de bewering dat bij een crossing selectie het laatste altijd
als eerste geselecteerd wordt, bij alle AutoCAD versies en instellingen,
betwijfel ik door mijn ervaring ten zeerste.
Ook dat toeval niet bestaat bij computers wil ik bestrijden:
Voorbeeld1: AutoCAD was in het verleden bij het OFFSET commando bij inwaarts offsetten van polylijnen onder invloed van de plaats van het scherm.
(Niemand gelooft me, maar kan tegen een weddenschap van 2000 Euro
het mirakel bij AutoCAD release 14 bij mij aanschouwen.)
Voorbeeld2: Als men bij het commando BHATCH kiest voor pick points
en het gebied wordt niet voor 100% op het scherm weergegeven dan gaat het de ene keer fout en de andere keer goed.
Voor deze emotionele nederlaag, was ik er heilig van overtuigd dat
AutoCAD alles volledig wiskundig opbouwde;
maar ja ik ben blond. :oops:
Het is overigens misschien de wiskundige Chaos theorie, die voor mij een zware emotionele aantasting is, die het bovenstaande wel kan verklaren.
Ja, en als de natuurkundige Stephen Hawkins ooit zijn werk zal voltooien,
is alles in theorie gedetermineerd.
Leuk voor de spelverslaafden en de staatsloterij.
Maar nu wat pragmatischer:
T.a.v. het eerste punt:
Om er zeker van te zijn dat altijd al je attributen en in de zelfde volgorde
geselecteerd worden
(en daardoor ook altijd in dezelfde volgorde gevraagd en gepresenteerd
worden in de dialoogboxen van ATTEDIT en EATTEDIT),
zou ik je programma als onderstaand aanpassen.
T.a.v. het tweede punt:
Als ik je vorige versie met
(command "insert" bestandsnaam lop "1" "1" "0") uitprobeer, dan krijg ik voor het materiaal
regen, voor de referentie
all,
voor de lengte
zoom en voor de breedte
e; maar dat zal wel aan mij liggen, want ik ben blond.:oops:
Daarom zou ik ook je programma aanpassen.
Dit eventueel in een andere versie als ik gedaan heb,vanwege je keuze van Verify(setvar "AFLAGS" 4), zou je elke vraag 2x moeten stellen.
Nogmaals mijn slechte eigenschappen: ik ben blond :oops:, heb geen humor :oops: en ben zelfs ook nog een beetje eigenwijs :oops:;
en toch hoop ik op je begrip.
Groetjes HofCAD
CS
IPS De kleuren van CSI zijn ook door toeval tot stand gekomen.
(defun c:attpl3 (/ e1 e2 e3 e4)
;;; 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?(command "attdef"
"""PartMat" "Geef de Materiaalsoort op: "
"" insertmat "0"
""
)
(setq e1 (entlast));;; Inserteren Referentie
(setq insertref
(command "attdef"
"""PartRef" "Geef een referentienaam op: "
"" ""
)
)
(setq e2 (entlast));;; Inserteren Lengte (=hoogte)
(setq insertl
(command "attdef"
"" "PartL" "Geef de hoogte op: "
afrondhoogte ""
)
)
(setq e3 (entlast)) ;;; Inserteren Breedte
(setq insertw
(command "attdef"
"" "PartW" "Geef de breedte op: "
afrondbreedte ""
)
)
(setq e4 (entlast));;; Maken wblock
(command "filedia" 0)
(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?;;; Inserteren wblock
(setq s1 (getstring "\nGeef de Materiaalsoort op: "))
(setq s2 (getstring "\nGeef een Referentienaam op: "))
(setq s3 (getstring "\nGeef de Hoogte op: "))
(setq s4 (getstring "\nGeef de Breedte op: "));;;bovenstaande vraagstelling moet nog veranderd worden wegens Verify(command "insert" bestandsnaam lop "1" "1" "0"
s1 s2 s3 s4 s1 s2 s3 s4)
(command "regen" "all")
(command "zoom" "e")
(princ)
)
Citaat van: HofCAD
Zoals met vele dingen in het leven, ben ik het er niet mee eens.
Maar ja, ik ben blond en volgens Bart zelfs kaal. :evil:
Zelfs de bewering dat bij een crossing selectie het laatste altijd
als eerste geselecteerd wordt, bij alle AutoCAD versies en instellingen,
betwijfel ik door mijn ervaring ten zeerste.
Ook dat toeval niet bestaat bij computers wil ik bestrijden:
Voorbeeld1: AutoCAD was in het verleden bij het OFFSET commando bij inwaarts offsetten van polylijnen onder invloed van de plaats van het scherm.
(Niemand gelooft me, maar kan tegen een weddenschap van 2000 Euro
het mirakel bij AutoCAD release 14 aanschouwen.)
)
Ik heb een gevoelige snaar geraakt met mijn opmerking over jouw volle blonde bos met haar denk ik :lol:
laast gemaak eerst geselecteerd werkt altijd
(je moet de volgorde niet verpesten door te kopieren natuurlijk).
met een lisp zou e.a geen probleem moeten zijn
maar 1 voor een selecteren gaat natuurlijk altijd goed.
ps. je offset probleem wordt veroorzaakt door een fout in het windows
register en is over naar een herinstallatie van windows en autocad 14.
(meestal definitief).
Maar dergelijke dingen zijn wel 1 van de redenen waarom ik altijd in het positieven kwadrant teken.
Aan HofCAD,
Mijn begrip heb je volledig, want mij hebben ze altijd geleerd dat je iemand moet soigneren wanneer deze persoon jou wil helpen. :wink:
=> HofCAD schreef
T.a.v. het eerste punt:
Om er zeker van te zijn dat altijd al je attributen en in de zelfde volgorde
geselecteerd worden
(en daardoor ook altijd in dezelfde volgorde gevraagd en gepresenteerd
worden in de dialoogboxen van ATTEDIT en EATTEDIT),
zou ik je programma als onderstaand aanpassen.
Dit klopt en werkt volledig! :vreegoe: Op deze manier wordt alles steeds in de juiste volgorde weergegeven.
Maar kan ik de variabelen e1, e2, e3 en e4 niet gebruiken bij het inserteren van de wblock ????
Want hoe jij het schrijft moet ik mijn attributes 2 maal ingeven. En zoals ergens op deze site te lezen staat: "Je bent lui als je je gemak niet zoekt" vindt ik dit vrij zinloos.
Daarom had ik geprobeerd om deze in te vullen (zie hieronder), maar dan loopt het programma vast! :(
(command "insert" bestandsnaam lop "1" "1"
"0" e1 e2 e3 e4 e1 e2
e3 e4
)
Wanneer ik evenwel niks invul, dus gewoon commando "insert" lukt het wel! Dit kan toch ook geen kwaad denk ik??? omdat de volgorde van selecteren van de attributes toch bepaald op welke wijze ze moeten ingevuld worden ????
(command "insert" bestandsnaam lop "1" "1" "0")
Toch bedank ik al enorm hartelijk voor de reeds gedane moeite, en ik hoop met uw (jullie) hulp tot een goed werkend einde te komen
Enne, eigenwijs zijn is geen slechte eigenschap, dat is gewoon een uitdrukking om te tonen dat u karakters hebt! Zelfs eigenwijs zijn moet ge positief bekijken
MVG,
Thomas
Citaat van: thomas151283Aan HofCAD,
Mijn begrip heb je volledig, want mij hebben ze altijd geleerd dat je iemand moet soigneren wanneer deze persoon jou wil helpen. :wink:
Beste Thomas,
Bedankt voor je ondersteuning, ik heb het ook echt nodig.
Stel dat ik had geschreven:
(setq e1 (getstring "\nGeef de Materiaalsoort op: "))
(setq e2 (getstring "\nGeef de Referentienaam op: "))
(setq e3 (getstring "\nGeef de Hoogte op: "))
(setq e4 (getstring "\nGeef de Breedte op: "))dan zou je inderdaad
(command "insert" bestandsnaam lop "1" "1" "0" e1 e2 e3 e4 e1 e2 e3 e4)kunnen gebruiken omdat dan e1, e2, e3 en e4 dan niet meer Entity names
bevat maar Strings.
Dit heb ik niet gedaan, wegens de duidelijkheid.
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 verwacht AutoCAD ook een bevestiging van je invoerwaarden.
Als je inderdaad VERIFY in deze situatie sterk op prijs stelt, en dat wilt
behouden voor het handmatig invoegen(Insert). dan zou ik het slot van
je programma ongeveer als volgt schrijven:
;;; Inserteren wblock
(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 "\nGeef de Hoogte op: "))
(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 "\nGeef de Breedte op: "))
(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)
(command "regen" "all")
(command "zoom" "e")
(princ)
)Indien je in het begin van je programma inplaats van
(setvar "AFLAGS" 4) kiest voor
(setvar "AFLAGS" 0),
moet je:
(command "insert" bestandsnaam lop "1" "1" "0" s1 s2 s3 s4)gebruiken.
Groetjes HofCAD
CS
IPS Bart is het een compliment 'Volle blonde bos met haar'? :lol:
Citaat van: HofCAD
PS Bart is het een compliment 'Volle blonde bos met haar'? :lol:
ja natuurlijk.
ik zelf behoorlijk glad van boven ben uiterst jaloers op je.
:D
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
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
CS
IAFLAGS System VariableType: 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 visibleATTDIA System VariableType: 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
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:
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
CS
I(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)
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
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 CS
IPS1 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
Citaat van: HofCADCitaat 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
=> 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'
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
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 S
I(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)