CADsite forum

AutoCAD => Autolisp => Topic gestart door: thomas151283 op ma 18 04 2005, 14:04:39

Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op ma 18 04 2005, 14:04:39
Ik heb een vraag / probleem;

Ik ben bezig met het commado -eattext om bepaalde attributes te exporteren naar Excel in de vorm van een *.CSV bestand.
Een van de bijhorende vragen is: enter output file path.
Hier zou ik graag ingeven in welke map het MOET komen, zodat alles een beetje geordend blijft.

Een bijkomend probleem is dat de bestandsnaam een variabele is, deze moet er dus ook ergens bijkomen.


(defun c:exportatt ()
 (setq teknaam (getvar "dwgname"))
 (command "-eattext"
      "C"
      "Y"
      "Y"
      ""
      "CSV"
      (strcat teknaam ".CSV")
      "Y"
 )
)



MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op ma 18 04 2005, 15:58:56
Citeer(defun c:exportatt ()
 (setq   teknaam
   (getvar "dwgname"))
 (command "-eattext"
      "C"
      "Y"
      "Y"
      ""
      "CSV"
;;;      (("C:\DWG\ACADTDBO\VLISP\CSV") ("teknaam" ".CSV"))
;;;      ("C:\\DWG\\ACADTDBO\\VLISP\\CSV\\"teknaam)
;;;      ("C:\\DWG\\ACADTDBO\\VLISP\\CSV\\")
;;;       ("C:\\DWG\\hout3\\VLISP\\CSV\\")
      (strcat teknaam ".CSV")
           ;;; Ge kunt die extentie veranderen als hij u vraag
;;;      Do you want to write to: c:........
;;;      dan zet ge N
;;;      dan typt ge de extentie in zoals bv hieronder maar de naam kunt ge niet wijzigen!!!
;;;      de teknaam die hier staat is de bestandsnaam. Ik heb al gezocht in de help funtie maar niets gevonden om dit variabel te kunnen zetten
;;;      Eattext staat trouwens ook niet verder uitgelegd in de help van vlisp in dat van cad wel.
       "N"
      "C:/...../VLISP/CSV/teknaam"
;;;      "C:\......\VLISP\\CSV\\teknaam"
 )
)

Misschien weet iemand anders dit op te lossen . Maar als ik die filepath ingeef is het laatste automatisch de bestandnaam.

"C:/...../VLISP/CSV/" als ge dit zet is de bestandsnaam niets. Vb  .csv
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op ma 18 04 2005, 18:40:48
Citaat van: Kenny H
Citeer(defun c:exportatt ()
 (setq   teknaam
   (getvar "dwgname"))
 (command "-eattext"
      "C"
      "Y"
      "Y"
      ""
      "CSV"
;;;      (("C:\DWG\ACADTDBO\VLISP\CSV") ("teknaam" ".CSV"))
;;;      ("C:\\DWG\\ACADTDBO\\VLISP\\CSV\\"teknaam)
;;;      ("C:\\DWG\\ACADTDBO\\VLISP\\CSV\\")
;;;       ("C:\\DWG\\hout3\\VLISP\\CSV\\")
      (strcat teknaam ".CSV")
           ;;; Ge kunt die extentie veranderen als hij u vraag
;;;      Do you want to write to: c:........
;;;      dan zet ge N
;;;      dan typt ge de extentie in zoals bv hieronder maar de naam kunt ge niet wijzigen!!!
;;;      de teknaam die hier staat is de bestandsnaam. Ik heb al gezocht in de help funtie maar niets gevonden om dit variabel te kunnen zetten
;;;      Eattext staat trouwens ook niet verder uitgelegd in de help van vlisp in dat van cad wel.
       "N"
      "C:/...../VLISP/CSV/teknaam"
;;;      "C:\......\VLISP\\CSV\\teknaam"
 )
)

Misschien weet iemand anders dit op te lossen . Maar als ik die filepath ingeef is het laatste automatisch de bestandnaam.

"C:/...../VLISP/CSV/" als ge dit zet is de bestandsnaam niets. Vb  .csv

Beste Kenny,

Nu ga ik iets heel doms doen, want op dit moment heb ik geen AutoCAD
tot mijn beschikking om wat ik opper te controleren.
Moet (setq teknaam (getvar "dwgname"))
niet vervangen worden door:
(setq teknaam (getvar "dwgname") teklen (strlen teknaam))
(setq teknaam (substr teknaam 1 (- teklen 4)))

Als het standaardzoekpad het templatefilesearchpad is daar geen
AutoCADvariabele voor, maar misschien wel een environment variable
die men bijv. als volgt zou kunnen lezen:(getenv "TemplatePath") en misschien als volgt zou kunnen
veranderen:(setenv "TemplatePath" "c:\\mytek").
Morgen kan ik weer iets echt proberen.

Groetjes HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op di 19 04 2005, 08:17:58
Hij plaatst die .csv in de zelfde map als waar ik mijn .dwg opsla.


Die (setenv "TemplatePath" "C:/........./CSV/") heeft daar geen invloed op. Hij selecteerd automatisch de map waar die .dwg staat.
De wblock dus.

Dat voor die bestandsnaam blijft gelijk. Thomas zijn manier of die van u.

Toch al bedankt voor de moeite :wink:

Kenny
Titel: Re: Bepalen waar op te slaan
Bericht door: HofCAD op di 19 04 2005, 08:54:19
Citaat van: thomas151283Ik heb een vraag / probleem;

Ik ben bezig met het commado -eattext om bepaalde attributes te exporteren naar Excel in de vorm van een *.CSV bestand.
Een van de bijhorende vragen is: enter output file path.
Hier zou ik graag ingeven in welke map het MOET komen, zodat alles een beetje geordend blijft.

Beste Thomas,

Een aantal wilde ideeen, je wilt de waarde van de attributen in een
excelbestand krijgen, hoe je dit ook anders kan bereiken.
1)Zoals in je vraag over APPINT gestelt, kan dat met Visual lisp en met
Visual basic.
2)Je kunt dit echter ook doen met ipv het commando -EATTEXT met het
commando ATTEXT.
3)In de Sample directory van AutoCAD zit de map AxtiveX en daarin zit de map ExtAttr met het bestand ExtAttr.
Indien je dit bestand met Excel opent, zie via Extra->macro->macro's
dat er een Macro Extract in zit.
Als je deze macro laat lopen, zullen ook je attribuutwaarden in het
excelbestand komen te staan.

Groetjes HofCAD CSI

PS Voor mij geldt: 'To be or not to be crazy'.
Titel: Re: Bepalen waar op te slaan
Bericht door: HofCAD op di 19 04 2005, 10:32:15
Citaat van: thomas151283Ik heb een vraag / probleem;

Ik ben bezig met het commado -eattext om bepaalde attributes te exporteren naar Excel in de vorm van een *.CSV bestand.
Een van de bijhorende vragen is: enter output file path.
Thomas

Beste Tomas,

Waarschijnlijk heb je geen vertrouwen in mij, omdat ik blond ben. :oops:
Dat is natuurlijk de normaalste zaak van de wereld, en ik heb er begrip
voor. :D
Nogmaals als je het echt goed wil doen, moet je Visual Lisp of Visual
Basic gebruiken. 8)
Zoals in mijn vorig bericht gestelt, zijn er ook tussenoplossingen.
Dus wil je AUB het programma attpl5 een paar maal uitproberen,
en daarna in dezelfde tekening attExport draaien.
Wel eerst natuurlijk controleren dat op schijf C de map C:\temp bestaat
en dat excel in de map c:\progra~1\micros~1\office zit.
Zoniet verander dan in het programma attExport
wat er respectievelijk achter DirOutput en DirExcel staat.

Groetjes HofCAD CSI

(defun c:attExport()
(defun wfil(file flist / i f1)
(setq f1 (open file "w") i 0)
(repeat (length flist)
(write-line (nth i flist) f1)
(setq i (1+ i)))
(close f1)
)
(setq ~fdia (getvar "FILEDIA"))
(setvar "FILEDIA" 0)
(setq DirOutput "c:\\Temp\\")
(setq DirExcel "c:/progra~1/micros~1/office/")
(setq TemplFile (strcat DirOutput "TEMPLL.TXT"))
(setq AttFile (strcat DirOutput "ATTFILE.TXT"))
(setq TemplLST '("PARTMAT C008000" "PARTREF C008000" "PARTL N008000" "PARTW N008000"))
(wfil TemplFile TemplLST)
(command "ATTEXT" "C" TemplFile AttFile)    
(setvar "FILEDIA" 1)
(Startapp (strcat DirExcel "Excel.exe") AttFile)
)

(defun c:attpl5 (/ ~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" 0);Geen Verify meer?
;;; 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 "")
;;;;;1)Misschien mag je (ssget "c" rop lbp) wel laten vervallen?  
;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" blocknaam lop "1" "1" "0" 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 ATTPL5 is geladen; Start met ATTPL5 bij Attdia= 0 of 1")(princ)
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op di 19 04 2005, 10:44:40
Beste HofCAD,

Ik heb wél vertrouwen in u!
Het enige probleem is dat ik niet rap van snap ben als het op Lisp begrijpen aankomt.  :oops:
En ik ben dan niet blond  :wink:

Hoe dan ook,
thx om zoveel moeite te doen!!!
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op di 19 04 2005, 10:58:04
Citaat van: thomas151283Beste HofCAD,
Ik heb wél vertrouwen in u!
En ik ben dan niet blond  :wink:

Beste Thomas,

Maar wil het het programma attpl5 en attExport een beetje werken?
Heb je verder ook naar het bestand ExtAttr.xls gekeken, en wat vindt
je daarvan?

HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op di 19 04 2005, 11:09:26
Beste HofCAD,

De programmatjes attpl5 en attExport werken perfect.
Heb ze een aantal keren uitgetest, en keer op keer kom ik uit hetgeen ik moest uitkomen !!

Verder vind ik de werkwijze via ExtAttr.xls  niet zo praktisch omdat ik het gevoel heb dat er nogal wat bijkomend werk bij komt kijken; en doel van lisp is toch automatiseren?!

Grtz, Thomas
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op wo 20 04 2005, 15:56:07
Citaat van: HofCAD
Citaat van: Kenny H
Citeer(defun c:exportatt ()
 (setq   teknaam
   (getvar "dwgname"))
 (command "-eattext"
      "C"
      "Y"
      "Y"
      ""
      "CSV"
;;;      (("C:\DWG\ACADTDBO\VLISP\CSV") ("teknaam" ".CSV"))
;;;      ("C:\\DWG\\ACADTDBO\\VLISP\\CSV\\"teknaam)
;;;      ("C:\\DWG\\ACADTDBO\\VLISP\\CSV\\")
;;;       ("C:\\DWG\\hout3\\VLISP\\CSV\\")
      (strcat teknaam ".CSV")
           ;;; Ge kunt die extentie veranderen als hij u vraag
;;;      Do you want to write to: c:........
;;;      dan zet ge N
;;;      dan typt ge de extentie in zoals bv hieronder maar de naam kunt ge niet wijzigen!!!
;;;      de teknaam die hier staat is de bestandsnaam. Ik heb al gezocht in de help funtie maar niets gevonden om dit variabel te kunnen zetten
;;;      Eattext staat trouwens ook niet verder uitgelegd in de help van vlisp in dat van cad wel.
       "N"
      "C:/...../VLISP/CSV/teknaam"
;;;      "C:\......\VLISP\\CSV\\teknaam"
 )
)

Misschien weet iemand anders dit op te lossen . Maar als ik die filepath ingeef is het laatste automatisch de bestandnaam.

"C:/...../VLISP/CSV/" als ge dit zet is de bestandsnaam niets. Vb  .csv

Beste Kenny,

Nu ga ik iets heel doms doen, want op dit moment heb ik geen AutoCAD
tot mijn beschikking om wat ik opper te controleren.
Moet (setq teknaam (getvar "dwgname"))
niet vervangen worden door:
(setq teknaam (getvar "dwgname") teklen (strlen teknaam))
(setq teknaam (substr teknaam 1 (- teklen 4)))


Morgen kan ik weer iets echt proberen.

Groetjes HofCAD CSI

Beste Thomas en Kenny,

Ik ben maar weer eens aan het programeren geslagen, om mijn
frustraties af te reageren. :twisted:
Hopelijk gaan julie wel onderstaande 3 programma's eens goed uittesten,
om zo wel tot een eerlijk oordeel te komen. 8)
Nogmaals als ik het echt goed had willen doen, had ik Visual Lisp of Visual
Basic gebruiken.  
Willen jullie AUB het programma attpl6 een paar maal uitproberen,
en daarna in dezelfde tekening AttExp1 en AttExp2 draaien.
Het programma AttExp1 gebruikt ATTEXT en het programma AttExp2
gebruikt -EATTEXT.
In de reeds aangeleverde programma's heb ik ook wijzigingen
aangebracht.
Wel eerst natuurlijk controleren dat op schijf C de map C:\temp bestaat
en dat excel in de map c:\progra~1\micros~1\office zit.
Zoniet verander dan in het programma's AttExp1 en AttExp2
wat er respectievelijk achter DirOutput, DirTemplate en DirExcel staat.

Groetjes HofCAD CSI

PS Als U AttExp2 draait, zonder eerst met EATTEXT een template
aangemaakt te hebben en in de juiste directory, dan krijgt U een
waarschuwingsvenster.

(defun c:AttExp2(/ ~CMD teknaam TemplateFil DirTemplate DirOutput DirExcel
Template num strNum NOToke Outfile)
(setq ~CMD (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq teknaam (getvar "dwgname"))
(setq teknaam (substr teknaam 1 (- (strlen teknaam) 4)))
(setq TemplateFil "atttempl.blk")
(setq DirTemplate "C:\\temp\\")
(setq DirOutput "C:\\temp\\")
(setq DirExcel "c:\\progra~1\\micros~1\\office\\")
(setq Template (strcat DirTemplate TemplateFil))
(if (findfile Template)
(progn
(setq Num 0 strNum "")
(setq NOToke T)
(while NOToke
(setq OutFile (strcat DirOutput teknaam strNum ".csv"))
(setq NOToke nil)
(if (findfile OutFile)(setq NOToke T))
(setq Num (1+ Num) strNum (itoa num))
)
(command "-eattext"
"C";Objects/Currentdwg/Selectdwg
"Y";Xref Yes/No
"Y";Nested blocks Yes/No
template  
"CSV";Csv/Txt/Xls/Mdb
OutFile
)
(if (findfile Outfile)
(progn
(princ (strcat " \n\n" Outfile " is aangemaakt."))
(Startapp (strcat DirExcel "Excel.exe") OutFile)
))
)
(progn
(load "AI_UTILS")
(ai_abort Template "is niet gevonden, maak die eerst aan met EATTEXT")
(princ (strcat Template " is niet gevonden,"))
(princ  "maak die eerst aan met EATTEXT"))
)
(setvar "CMDECHO" ~CMD) (princ)
)
(defun c:AttExp1(/ wfil ~CMD ~FDIA teknaam TemplateFil DirOutput DirExcel
DirTemplate Template Num strNum NOToke OutFile)
(defun wfil(file flist / i f1)
(setq f1 (open file "w") i 0)
(repeat (length flist)
(write-line (nth i flist) f1)
(setq i (1+ i)))
(close f1)
)
(setq ~CMD (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq ~FDIA (getvar "FILEDIA"))
(setq teknaam (getvar "dwgname"))
(setq teknaam (substr teknaam 1 (- (strlen teknaam) 4)))
(setq TemplateFil "atttempl.txt")
(setq DirOutput "c:\\Temp\\")
(setq DirExcel "c:/progra~1/micros~1/office/")
(setq DirTemplate "C:\\temp\\")
(setq Template (strcat DirTemplate TemplateFil))
(setq Num 0 strNum "")
(setq NOToke T)
(while NOToke
(setq OutFile (strcat DirOutput teknaam strNum ".txt"))
(setq NOToke nil)
(if (findfile OutFile)(setq NOToke T))
(setq Num (1+ Num) strNum (itoa num))
)
(setq TemplLST '("PARTMAT C008000" "PARTREF C008000" "PARTL N008000" "PARTW N008000"))
(wfil Template TemplLST)
(setvar "FILEDIA" 0)
(command
"ATTEXT"
"C" ;;Cdf/Sdf/Dxf
Template
OutFile)    
(setvar "FILEDIA" ~FDIA)
(princ (strcat " \n\n" Outfile " is aangemaakt."))
(Startapp (strcat DirExcel "Excel.exe") OutFile)
)
(defun c:attpl6 (/ ~cmd ~clay ~afl ~atr lay collay NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
(setq ~cmd (getvar "CMDECHO") ~clay (getvar "CLAYER")
~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"  
(setq lay "attributes" collay "8")
(if (not (tblsearch "LAYER" lay))
(command "_LAYER" "M" lay "C" collay "" "")
(command "_LAYER" "T" lay "ON" lay "S" lay ""))
;;; 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" 0);Geen Verify meer?
;;; 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 "")
;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)
);end progn
(command "insert" blocknaam lop "1" "1" "0"));end if
(command "regenall")
(command "zoom" "e")
(setvar "AFLAGS" ~afl)(setvar "ATTREQ" ~atr)
(setvar "CLAYER" ~CLAY)(setvar "CMDECHO" ~CMD)
(princ)
)
(princ "\n ATTPL6 is geladen; Start met ATTPL6 bij Attdia= 0 of 1")(princ)
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op wo 20 04 2005, 16:46:29
Ik heb die attpl6 een paar keer uitgeprobeert.
Hij gaf mij bij de eerste 3 keer een dialoogbox weer waar ik mijn materiaal en referentienaam moest invullen. Mijn blocknaam ging wel via de commando regel.

De andere keren ging alles via de commando regel.  :roll:  :?:  :?:
Dan heb ik nog toegevoegd dat hij die rechthoek tekend, want nu is die enkel van toepassing om de maten te bekomen.
Deze rechthoek had thomas liefst staan.

De ene keer staan er enkel mijn gegevens die ik in vul in de commando regel, en de andere keer staat er ook de partref, partmat, enz  bij :!:  :!:

:?  :?
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op wo 20 04 2005, 16:51:49
Nu de laatste keren blijft deze Part... steeds weg.
Alles gaat terug via de commando regel.

Terinfo
Die Part.. springen bij mij weg na het opgeven van de blocknaam.
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op wo 20 04 2005, 16:55:37
(defun c:AttExp2(/ ~CMD teknaam TemplateFil DirTemplate DirOutput DirExcel
Template num strNum NOToke Outfile)
(setq ~CMD (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq teknaam (getvar "dwgname"))
(setq teknaam (substr teknaam 1 (- (strlen teknaam) 4)))
(setq TemplateFil "atttempl.blk")
(setq DirTemplate "C:\\temp\\")
(setq DirOutput "C:\\temp\\")
(setq DirExcel "c:\\progra~1\\micros~1\\office\\")
(setq Template (strcat DirTemplate TemplateFil))
(if (findfile Template)
(progn
(setq Num 0 strNum "")
(setq NOToke T)
(while NOToke
(setq OutFile (strcat DirOutput teknaam strNum ".csv"))
(setq NOToke nil)
(if (findfile OutFile)(setq NOToke T))
(setq Num (1+ Num) strNum (itoa num))
)
(command "-eattext"
"C";Objects/Currentdwg/Selectdwg
"Y";Xref Yes/No
"Y";Nested blocks Yes/No
template
"CSV";Csv/Txt/Xls/Mdb
OutFile
)
(if (findfile Outfile)
(progn
(princ (strcat " \n\n" Outfile " is aangemaakt."))
(Startapp (strcat DirExcel "Excel.exe") OutFile)
))
)
(progn
(load "AI_UTILS")
(ai_abort Template "is niet gevonden, maak die eerst aan met EATTEXT")
(princ (strcat Template " is niet gevonden,"))
(princ "maak die eerst aan met EATTEXT"))
)
(setvar "CMDECHO" ~CMD) (princ)
)
(defun c:AttExp1(/ wfil ~CMD ~FDIA teknaam TemplateFil DirOutput DirExcel
DirTemplate Template Num strNum NOToke OutFile)
(defun wfil(file flist / i f1)
(setq f1 (open file "w") i 0)
(repeat (length flist)
(write-line (nth i flist) f1)
(setq i (1+ i)))
(close f1)
)
(setq ~CMD (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq ~FDIA (getvar "FILEDIA"))
(setq teknaam (getvar "dwgname"))
(setq teknaam (substr teknaam 1 (- (strlen teknaam) 4)))
(setq TemplateFil "atttempl.txt")
(setq DirOutput "c:\\Temp\\")
(setq DirExcel "c:/progra~1/micros~1/office/")
(setq DirTemplate "C:\\temp\\")
(setq Template (strcat DirTemplate TemplateFil))
(setq Num 0 strNum "")
(setq NOToke T)
(while NOToke
(setq OutFile (strcat DirOutput teknaam strNum ".txt"))
(setq NOToke nil)
(if (findfile OutFile)(setq NOToke T))
(setq Num (1+ Num) strNum (itoa num))
)
(setq TemplLST '("PARTMAT C008000" "PARTREF C008000" "PARTL N008000" "PARTW N008000"))
(wfil Template TemplLST)
(setvar "FILEDIA" 0)
(command
"ATTEXT"
"C" ;;Cdf/Sdf/Dxf
Template
OutFile)
(setvar "FILEDIA" ~FDIA)
(princ (strcat " \n\n" Outfile " is aangemaakt."))
(Startapp (strcat DirExcel "Excel.exe") OutFile)
)
(defun c:attpl6 (/ ~cmd ~clay ~afl ~atr lay collay NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
(setq ~cmd (getvar "CMDECHO") ~clay (getvar "CLAYER")
~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"
(setq lay "attributes" collay "8")
(if (not (tblsearch "LAYER" lay))
(command "_LAYER" "M" lay "C" collay "" "")
(command "_LAYER" "T" lay "ON" lay "S" lay ""))
;;; 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)))
 (command "rectangle" lop rbp)
(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" 0);Geen Verify meer?
;;; 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 "")
;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)
);end progn
(command "insert" blocknaam lop "1" "1" "0"));end if
(command "regenall")
(command "zoom" "e")
(setvar "AFLAGS" ~afl)(setvar "ATTREQ" ~atr)
(setvar "CLAYER" ~CLAY)(setvar "CMDECHO" ~CMD)
(princ)
)
(princ "\n ATTPL6 is geladen; Start met ATTPL6 bij Attdia= 0 of 1")(princ)
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op wo 20 04 2005, 17:54:13
Citaat van: Kenny HIk heb die attpl6 een paar keer uitgeprobeert.
Hij gaf mij bij de eerste 3 keer een dialoogbox weer waar ik mijn materiaal en referentienaam moest invullen. Mijn blocknaam ging wel via de commando regel.

De andere keren ging alles via de commando regel.  :roll:  :?:  :?:
Dan heb ik nog toegevoegd dat hij die rechthoek tekend, want nu is die enkel van toepassing om de maten te bekomen.
Deze rechthoek had thomas liefst staan.

De ene keer staan er enkel mijn gegevens die ik in vul in de commando regel, en de andere keer staat er ook de partref, partmat, enz  bij :!:  :!:

:?  :?
Citaat van: Kenny Hny H"]Nu de laatste keren blijft deze Part... steeds weg.
Alles gaat terug via de commando regel.

Terinfo
Die Part.. springen bij mij weg na het opgeven van de blocknaam.


Beste Kenny,

Ik ben blij dat je zo snel gereageerd hebt, want vandaar uit kan Thomas ook weer op ideeen komen. :D  :lol:  :o
Het grootste stuk van het eerste gedeelte van attpl6  is nog van Thomas, en ik weet
niet goed wat hij daar eigenlijk mee wil. :oops:
Zie zijn eerste vraagstelling 'Lisp routine maken....." met attpl2 op:
http://www.cadsite.be/forum/viewtopic.php?t=609
en
http://www.cadsite.be/forum/viewtopic.php?t=620
In drie onderwerpen heeft hij het over hetzelfde programma, zonder
eigenlijk precies te zijn en de wezenlijke definitieve doelstelling te formuleren.
Waarschijnlijk ook nog in:
http://www.cadsite.be/forum/viewtopic.php?t=626

Jij schrijft dat hij in het block een rechthoek wil, maar daar heb ik nooit iets van
gezien of gelezen; hoewel het toch wel zo zou kunnen zijn, gezien wat hij
geprogrameerd heeft.
Ik dacht eigenlijk eerder dat hij een kamer of een blok wilde opmeten,
gezien hij de afgeronde waarden gebruikt als default bij z'n attributen.  8)
Ik ben begonnen aan attpl2 over vragen van WBLOCK,
en daarna ben ik van het ene probleem in het andere gerold,
en als laatste dat van -EATTEXT.
Bijvoorbeeld: Ik weet niet hoe z'n block er uiteindelijk uit moet zien, en ook niet hoe hij de invoer wil verzorgen. :oops:
Gezien de invoerregels die hij gemaakt, ben ik er vanuit gegaan dat bij
hem de variabele ATTDIA op 0 staat.  8)

Dit snap ik niet:
De andere keren ging alles via de commando regel.  :roll:  :?:  :?:
of heb je ATTDIA op 0 gezet.

Bedoel je:
De ene keer staan er enkel mijn gegevens die ik in vul in de commando regel,
en de andere keer staat er ook de partref, partmat, enz  bij :!:  :!:

met dit dat de vraagstelling voor bijvoorbeeld  Materiaal twee keer
herhaald wordt.
Als dat zo is, dat komt omdat Thomas in eerste instantie zijn attributen
aanmaakte met de mode Verify, en Ja dat moet je als je netjes bent er
ook twee keer na vragen en bij de tweede keer de default geven.

Kun je dit verduidelijken:
Nu de laatste keren blijft deze Part... steeds weg.
Alles gaat terug via de commando regel.


Dit onderste komt nog van Thomas:
Die Part.. springen bij mij weg na het opgeven van de blocknaam.

Groetjes HofCAD CSI

PS1 Ook de andere twee (AttExp1 en AttExp2) al uitgetest, want daar ging het volgens mij om?

PS2 Moet die rechthoek, die je wenst en laat tekenen , niet opgenomen worden in het block?

PS3 Gebruik je AttExp1 dan moet je eigenlijk in EXCEL het Txtbestand
opnieuw openen en via de Wizard tekst importeren de waarden in de verschillende
kolommen laten komen.
Bestand->Openen->Bestandstype->Alle bestanden->

PS4 Thomas kan in de template voor AttExp1 natuurlijk ook onderstaand gebruiken:
 
BL:NAME Cwww000 (Block name)

BL:LEVEL Nwww000 (Block nesting level)

BL:X Nwwwddd (X coordinate of block insertion point)

BL:Y Nwwwddd (Y coordinate of block insertion point)

BL:Z Nwwwddd (Z coordinate of block insertion point)

BL:NUMBER Nwww000 (Block counter; the same for MINSERT)

BL:HANDLE Cwww000 (Block handle; the same for MINSERT)

BL:LAYER Cwww000 (Block insertion layer name)

BL:ORIENT Nwwwddd (Block rotation angle)

BL:XSCALE Nwwwddd (X scale factor)

BL:YSCALE Nwwwddd (Y scale factor)

BL:ZSCALE Nwwwddd (Z scale factor)

BL:XEXTRUDE Nwwwddd (X component of block extrusion direction)

BL:YEXTRUDE Nwwwddd (Y component of block extrusion direction)

BL:ZEXTRUDE Nwwwddd (Z component of block extrusion direction)

numeric Nwwwddd (Numeric attribute tag)

character Cwww000 (Character attribute tag)
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 08:09:20
Citeer
;;; Plaatsen van attributes 3a
;;; Tekenen van rechthoek met ingave van Lengte en Breedte
;;; Gemaakt op: maandag 18 april 2005
;;; Laatste wijziging: woensdag 20 april 2005


(defun c:attpl3la (/ ~cmd ~afl NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
 (setq   ~cmd (getvar "CMDECHO")
   ~afl (getvar "AFLAGS")
 )
 (setvar "CMDECHO" 0)
;;; style maakt een nieuwe tekststijl aan: genaamd "attributes"
 (command "style" "attributes" "tahoma" "15" "" "" "" "")
;;; layer maakt een nieuw laag aan: genaamd "attributes"
 (command "layer" "m" "zijkant" "c" "red" "" "")

;;; Tekenen van een rechthoek adhv Lengte en breedte
 (setq lop (getpoint "\nLinker benedenhoekpunt aub: "))
 (setq breedte (getreal "\nGeef breedte in :"))
 (setq hoogte (getreal "\nGeef hoogte in :"))
 (setq rop (polar lop 0 breedte))
 (setq rbp (polar rop (dtr 90) hoogte))
 (setq lbp (polar rbp pi breedte))
 (command "rectangle" lop rbp)
;;; Breedte en Hoogte bepalen
 (setq afrondbreedte (fix (+ breedte 0.5)))
 (setq afrondhoogte (fix (+ hoogte 0.5)))

;;; Inserteerpunt Attribute Materiaal (PartMat)
 (setq   insertmat
    (getpoint
      "\nDuid een invoegpunt voor de attributes aan aub: "
    )
 )
 (setvar "AFLAGS" 0)
;;; 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))
;;; Definieren attribuut PartQTY
 (command "attdef"          ""         "PartQTY"
      "Geef het aantal stukken op: "      ""
      ""
     )
 (setq e5 (entlast))

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

;;; 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 (strcat blocknaam))
;;;   (setq
;;;     sh (strcat s2
;;;        )
;;;   )
;;;   (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)
   )
     )
     (setq notoke T)
     (while NOToke
   (setq s5 (getstring "\nGeef het aantal stukken op: "))
   (setq
     sh (getstring
          (strcat "\nGeef nogmaals het aantal stukken op: <"
             s5
             "> op: "
          )
        )
   )
   (setq NOToke nil)
   (if (/= s5 sh)
     (setq NOToke T)
   )
   (if (= sh "")
     (setq NOToke nil)
   )
     )
     (command "insert"   bestandsnaam lop "1" "1" "0" s1   s2 s3 s4 s5)
   )               ; End progn
   (command "insert" bestandsnaam lop "1" "1" "0")
 )               ; End if
 (command "filedia" 1)
 (command "regenall")
 (command "zoom" "e")
 (setvar "AFLAGS" ~afl)
 (setvar "CMDECHO" ~CMD)
 (setvar "osmode" 1)
 (princ)
)

Thomas in dit programma is de blocknaam = de referentienaam. Dat wou je toch bereiken. Hij vraag u dus ook maar 1 keer een naam in te geven en zet deze direct ook als refnaam voor de block.
Moet ge zelf die refnaam nog kunnen veranderen? Ik denk van niet aangezien ge wilt dat de blocknaam gelijk is aan de refnaam.
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 08:16:49
Beste HofCAD,

Dat van die part... enz daar moet ge niet over piekeren.
Die part... staat er enkel als hij u vraag waar wilt ge uw invoegpunt wilt hebben voor die atributes.

Citeer(setq   insertmat
    (getpoint
      "\nDuid een invoegpunt voor de attributes aan aub: "
    )
 )

Dan staat er heel even op het scherm partmat, partl enz mar dit wordt dan vervangen door uw gegevens. Ik dacht eerst dat dit er bij moest blijven staan zodat ge dus

partmat: Graniet
partref: Tablet
enz

zou staan hebben op het scherm.


Wat er in feite enkel opkomt na het doorlopen van het progrmma is dit

Graniet
Tablet
enz

Wat denk ik voldoende is.
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 08:42:24
Aan HofCAD en Kenny,

Ik heb attpl6 ook enkele malen uitgetest (denk pakweg 15x). Vanaf poging 1 tem poging 15 komt er dezelfde werkwijze op. Alles blijft gaan via dialoogbox (behalve invullen blocknaam).
Ik heb hieraan geen problemen ondervonden.

AttExp1 werkt ook probleemloos bij mij. Elke attribuut wordt omgezet naar een txt bestand. Ongeacht ofdat er nu maar 1 of 10 attributes in de tekening staan.

Bij AttExp2 heb ik nog een vraag: er wordt gevraagd naar een template.
Is dit een template zoals er een nodig is voor AttExp1?
Want verder dan de waarschuwing kom ik hier niet.


Verder wil ik verduidelijken waarom ik werk met afgeronde getallen: wanneer ik dit niet doe worden de attributes hoogt en breedte ingevuld als vb: 800,00000000.
Ikzelf vind dit enorm onoverzichtelijk (zeker omdat de getallen in een stuklijst worden geplaatst achteraf).
Daarom rond ik ze af, en wordt er 800 ingevuld.

Antwoord op:

PS2 Moet die rechthoek, die je wenst en laat tekenen , niet opgenomen worden in het block?

=> dit gebeurt bij mij altijd. Vermoed dat dit is omdat ik mijn nodige gegevens selecteer via een window.



Het grootste nadeel van te werken met AttExp1 is dat de gegevens als TXTbestand worden aangemaakt en opgeslagen.
Via -eattext kunnen de gegevens direct als *.CSV bestand worden opgeslagen. Dit laatste is voor mij gemakkelijker omdat de gegevens nadien worden ingelezen in een ander programma (nl.: Ardis Cutting Optimizer, en dit programma kan enkel *.CSV bestanden inlezen)

Het is niet dat ik lui ben, maar wanneer ik hetzelfde kan bekomen door een bewerking minder te moeten doen, lijkt me dit toch wel een enorme tijdswinst.



Dit is speciaal voor HofCAD:
wat is mijn uiteindelijke doelstelling van mijn programmering:

=> tekenen van verschillende onderdelen van een meubel (zijkanten, deuren, ruggen, ladefronten, ...) en hieraan toekennen van attributes (breedte, hoogte, naam, aantal en soort plaatmateriaal).
De attributes worden toegekend zodat ik vanuit mijn tekeningen automatisch mijn stuklijsten kan opstellen.
Deze stuklijsten moeten liefst in een *.CSV bestand opgemaakt worden omdat de stuklijsten in een volgende stap worden gebruikt in een nog een ander programma.

Ik hoop dat u door deze korte beschrijving toch stilaan een idee begint te krijgen wat de bedoeling is. (Ik dacht dat iedereen dit wel doorhad omdat niemand er specifiek achter vroeg  :oops: )

Thx,
MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 08:52:22
Aan Kenny;


Kenny schreef:

Thomas in dit programma is de blocknaam = de referentienaam. Dat wou je toch bereiken. Hij vraag u dus ook maar 1 keer een naam in te geven en zet deze direct ook als refnaam voor de block.


=> Dit is inderdaad de bedoeling dat die gelijk zijn. Maar bij mij wordt deze nog steeds niet automatisch ingegeven.
Ik moet dus een blocknaam én referentienaam opgeven.


Kenny schreef:

Moet ge zelf die refnaam nog kunnen veranderen? Ik denk van niet aangezien ge wilt dat de blocknaam gelijk is aan de refnaam.

=> Als de blocknaam = refnaam moet deze niet meer kunnen veranderen; anders heeft het weinig nut dat deze gelijk zijn aan elkaar.
Ik bezie het eigenlijk als een soort min vereiste  :lol:


Maar hetgeen ik niet snap is het feit dat het lukt om de breedte en hoogte automatisch te laten invullen, maar voor de blocknaam =  referentienaam lukt dit niet (ligt voor de verandering ongetwijfeld aan mij  :oops: ).



En het idd na het doorlopen voldoende dat er enkel:

Graniet
Tablet
....

staat.
De attributes mogen de tek niet onoverzichtelijk maken.



MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 09:03:08
Beste Thomas,

Hebt ge het programma op vorige pagina al eens gecopieerd en getest? Ik heb daar even die (if not oké) enz in commentaar gezet. Hij gaat u dit dan ook niet meer vragen of u met die refnaam akkoord bent. Is toch overbodig als het gelijk is aan die blocknaam!

Voor verdere vragen of problemen ben ik steeds beschikbaar.
(Geld dus ook voor alle andere leden :wink: )

MVG

Kenny
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 09:24:15
Dag Kenny,

heb het gekopieërd, en ik heb nog steeds het probleem dat de refnaam NIET wordt direct wordt ingevuld.

Ligt ongetwijfeld aan mij  :oops: (Weeral)

MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 09:58:50
Thomas,

Doe dit eens.


(command "insert"   bestandsnaam lop "1" "1" "0" s1   blocknaam s3 s4 s5)

ipv

(command "insert"   bestandsnaam lop "1" "1" "0" s1   s2 s3 s4 s5)

En zet dat S2 pakje volledig in commenataar. Zoals hieronder. Bij mij gaat dit ook zo. :wink:


Citeer;;;      (setq notoke T)
;;;      (while NOToke
;;;      (setq s2 (strcat blocknaam))
;;;   (setq
;;;     sh (strcat s2
;;;        )
;;;   )
;;;   (setq NOToke nil)
;;;   (if (/= s2 sh)
;;;     (setq NOToke T)
;;;   )
;;;   (if (= sh "")
;;;     (setq NOToke nil)
;;;   )
;;;      )

Hopelijk bij u nu ook  :roll:
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 10:26:23
Dag Kenny,

Same Shit, Different Lisp

De refnaam wordt nog steeds niet ingevuld.

MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 11:01:08
Als ge hem eens laat lopen met animate op, slaat hij dan iets over?
Staat blocknaam enz ingevuld? contoleren met watch.
Bij mij staat er alles in wat nodig is voor die attribute.

Weet niet direct wat u probleem kan zijn.  :x  :?
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 12:59:09
Dag Kenny,

via animate slaat hij een vrij groot stuk over:
vanaf:

;;; Insert block
 (if (= (getvar "ATTDIA") 0)
   (progn
tot

     (command "insert"   bestandsnaam lop "1" "1" "0" s1   blocknaam s3 s4


Het rare eraan is dat alle nodige variabelen een naam hebben, maar niet worden ingevuld.

Citeer
Weet niet direct wat u probleem kan zijn.    :x  :?



Volgens mij is er maar 1 probleem; en dat ben IK voor de verandering  :cry:  :roll:
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 13:08:09
Citaat van: thomas151283
Volgens mij is er maar 1 probleem; en dat ben IK voor de verandering  :cry:  :roll:

Dat kan ik best geloven :!:
:lachen:  :lachen:
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 13:09:55
En nu terug serieus.

:idea:
Deel u programma eens op in stukken. Zet maw een groot deel in commentaar en voeg telkens iets toe mss vindt je zo een oplossing.
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 13:14:55
Citeer;;; Plaatsen van attributes 3a
;;; Tekenen van rechthoek met ingave van Lengte en Breedte
;;; Gemaakt op: maandag 18 april 2005
;;; Laatste wijziging: woensdag 20 april 2005


(defun c:attpl3la (/ ~cmd ~afl NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
 (setq   ~cmd (getvar "CMDECHO")
   ~afl (getvar "AFLAGS")
 )
 (command "ATTDIA" "0")
 (setvar "CMDECHO" 0)
;;; style maakt een nieuwe tekststijl aan: genaamd "attributes"
 (command "style" "attributes" "tahoma" "15" "" "" "" "")
;;; layer maakt een nieuw laag aan: genaamd "attributes"
 (command "layer" "m" "zijkant" "c" "red" "" "")

;;; Tekenen van een rechthoek adhv Lengte en breedte
 (setq lop (getpoint "\nLinker benedenhoekpunt aub: "))
 (setq breedte (getreal "\nGeef breedte in :"))
 (setq hoogte (getreal "\nGeef hoogte in :"))
 (setq rop (polar lop 0 breedte))
 (setq rbp (polar rop (dtr 90) hoogte))
 (setq lbp (polar rbp pi breedte))
 (command "rectangle" lop rbp)
;;; Breedte en Hoogte bepalen
 (setq afrondbreedte (fix (+ breedte 0.5)))
 (setq afrondhoogte (fix (+ hoogte 0.5)))

;;; Inserteerpunt Attribute Materiaal (PartMat)
 (setq   insertmat
    (getpoint
      "\nDuid een invoegpunt voor de attributes aan aub: "
    )
 )
 (setvar "AFLAGS" 0)
;;; 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))
;;; Definieren attribuut PartQTY
 (command "attdef"          ""         "PartQTY"
      "Geef het aantal stukken op: "      ""
      ""
     )
 (setq e5 (entlast))

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

;;; 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 (strcat blocknaam))
;;;   (setq
;;;     sh (strcat s2
;;;        )
;;;   )
;;;   (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)
   )
     )
     (setq notoke T)
     (while NOToke
   (setq s5 (getstring "\nGeef het aantal stukken op: "))
   (setq
     sh (getstring
          (strcat "\nGeef nogmaals het aantal stukken op: <"
             s5
             "> op: "
          )
        )
   )
   (setq NOToke nil)
   (if (/= s5 sh)
     (setq NOToke T)
   )
   (if (= sh "")
     (setq NOToke nil)
   )
     )
     (command "insert"   bestandsnaam lop "1" "1" "0" s1   blocknaam s3 s4 s5)
   )               ; End progn
   (command "insert" bestandsnaam lop "1" "1" "0")
 )               ; End if
 (command "filedia" 1)
 (command "regenall")
 (command "zoom" "e")
 (setvar "AFLAGS" ~afl)
 (setvar "CMDECHO" ~CMD)
 (setvar "osmode" 1)
 (princ)
)
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 13:17:29
Ik zal dat op die manier eens proberen.
Hopelijk vind ik op die manier dé oplossing!

Maar ik blijf erbij dat ik het raar vind dat enkel de refnaam niet wordt ingevuld; zelfs niet als ik gedeelte van s2 gelijk maak met stuk van s3 of s4 (respectievelijk hoogte en breedte)

Grtz
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 13:18:45
Beste Thomas,

Ik heb mijn hersens weer effe gepijnigd en mss iets gevonden.
Er staat daar ergens

;;; Insert block
(if (= (getvar "ATTDIA") 0)

Dit wil zeggen als Attdia 0 is overloopt hij gans die if
Nu kan het zijn dat bij die attdia op 1 staat en dan leest hij dit niet.
Om dit te voorkomen moet ge in het begin

(command "ATTDIA" "0")

zetten :!:  :!:

Hopelijk is het dit foutje.  :wink:

MVG

Kenny

Ps met da lachen wil ik u ni kwetsen  :( .
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 13:21:14
Hoeveel tijd hebt ge misschien nog om uw project af te werken?
2 of 3 weken?
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 14:03:23
Dag Kenny,

ik heb nog 2.5 week om alles af te krijgen. Zal wel lukken denk ik; moet vooral nog testen.

Citeer;;; Insert block
(if (= (getvar "ATTDIA") 0)

Dit wil zeggen als Attdia 0 is overloopt hij gans die if
Nu kan het zijn dat bij die attdia op 1 staat en dan leest hij dit niet.
Om dit te voorkomen moet ge in het begin

(command "ATTDIA" "0")

zetten  

Nu gaat er niks meer via een dialoogbox!!
Alles gaat nu via de commandoregel, waarbij alles eerst moet ingetikt worden, en vervolgens bevestigd worden.
Dit laatste is logisch omdat ik mijn attributes invul met "V" (antwoord zie HofCAD CSI).

Geen probleem dat ge met mij lacht hoor Kenny, daarvoor ken ik u al lang genoeg.

Grtz,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 14:05:30
Da komt door die attdia die dialoogbox.
En die bevestiging krijg ik ook.

Het gaat nu :D

Des te beter hé
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 14:12:36
CiteerDa komt door die attdia die dialoogbox.
En die bevestiging krijg ik ook.

Het gaat nu  

Des te beter hé



Het werkt nu, das is héél goed!  :vreegoe:
Maar nu is mijn vraag ofdat het via die dialoogbox kan? Ik vind dat overzichtelijker.  :?

Want ik blijf erbij dat als breedte en hoogte automatisch kunnen worden ingevuld, het ook moet lukken  met de refnaam.

Toch al hartelijk dank,
MVG
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 14:15:27
Ik zal eens proberen.
Ik denk dat ge dan die if en die attdia op 1 moet zetten
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 14:30:44
Citaat van: Kenny HIk zal eens proberen.
Ik denk dat ge dan die if en die attdia op 1 moet zetten

Het is niet zo simpel :!:  :(
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 14:36:16
Kenny,

Het is inderdaad niet zo simpel wanneer er:

 (if (= (getvar "ATTDIA") 1)

ipv

(if (= (getvar "ATTDIA") 0)

wordt geplaatst krijg ik totaal andere zaken op mijn scherm

VB:
partmat = filedia
partref = 1
partl = regenall
partw = zoom
partqty = e


Enkel hetgeen in cyaan staat verschijnt op het scherm!!

Grtz,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 21 04 2005, 14:50:23
Citaat van: Kenny HHoeveel tijd hebt ge misschien nog om uw project af te werken?
2 of 3 weken?

Beste Thomas,

Ik zie geen verschil in werking onder AutoCAD 2002 en 2004.
Kijk even naar de veranderingen in het geel en rood bij  ATTPL8.
Heb je trouwens al AttExp1 (met ATTEXT) en AttExp2 (met -EATTEXT) getest.

Groetjes HofCAD CSI

(defun c:AttExp2(/ ~CMD teknaam TemplateFil DirTemplate DirOutput DirExcel
Template num strNum NOToke Outfile)
(setq ~CMD (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq teknaam (getvar "dwgname"))
(setq teknaam (substr teknaam 1 (- (strlen teknaam) 4)))
(setq TemplateFil "atttempl.blk")
(setq DirTemplate "C:\\temp\\")
(setq DirOutput "C:\\temp\\")
(setq DirExcel "c:\\progra~1\\micros~1\\office\\")
(setq Template (strcat DirTemplate TemplateFil))
(if (findfile Template)
(progn
(setq Num 0 strNum "")
(setq NOToke T)
(while NOToke
(setq OutFile (strcat DirOutput teknaam strNum ".csv"))
(setq NOToke nil)
(if (findfile OutFile)(setq NOToke T))
(setq Num (1+ Num) strNum (itoa num))
)
(command "-eattext"
"C";Objects/Currentdwg/Selectdwg
"Y";Xref Yes/No
"Y";Nested blocks Yes/No
template  
"CSV";Csv/Txt/Xls/Mdb
OutFile
)
(if (findfile Outfile)
(progn
(princ (strcat " \n\n" Outfile " is aangemaakt."))
(Startapp (strcat DirExcel "Excel.exe") OutFile)
))
)
(progn
(load "AI_UTILS")
(ai_abort Template "is niet gevonden, maak die eerst aan met EATTEXT")
(princ (strcat Template " is niet gevonden,"))
(princ  "maak die eerst aan met EATTEXT"))
)
(setvar "CMDECHO" ~CMD) (princ)
)
(defun c:AttExp1(/ wfil ~CMD ~FDIA teknaam TemplateFil DirOutput DirExcel
DirTemplate Template Num strNum NOToke OutFile)
(defun wfil(file flist / i f1)
(setq f1 (open file "w") i 0)
(repeat (length flist)
(write-line (nth i flist) f1)
(setq i (1+ i)))
(close f1)
)
(setq ~CMD (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq ~FDIA (getvar "FILEDIA"))
(setq teknaam (getvar "dwgname"))
(setq teknaam (substr teknaam 1 (- (strlen teknaam) 4)))
(setq TemplateFil "atttempl.txt")
(setq DirOutput "c:\\Temp\\")
(setq DirExcel "c:/progra~1/micros~1/office/")
(setq DirTemplate "C:\\temp\\")
(setq Template (strcat DirTemplate TemplateFil))
(setq Num 0 strNum "")
(setq NOToke T)
(while NOToke
(setq OutFile (strcat DirOutput teknaam strNum ".txt"))
(setq NOToke nil)
(if (findfile OutFile)(setq NOToke T))
(setq Num (1+ Num) strNum (itoa num))
)
(setq TemplLST '("PARTMAT C008000" "PARTREF C008000" "PARTL N008000" "PARTW N008000"
"PartQTY N008000"))
(wfil Template TemplLST)
(setvar "FILEDIA" 0)
(command
"ATTEXT"
"C" ;;Cdf/Sdf/Dxf
Template
OutFile)    
(setvar "FILEDIA" ~FDIA)
(princ (strcat " \n\n" Outfile " is aangemaakt."))
(Startapp (strcat DirExcel "Excel.exe") OutFile)
)

(defun c:attpl8 ()
;/ ~cmd ~clay ~afl ~atr lay collay NOToke e0 e1 e2 e3 e4 e5 s1 s2 s3 s4 s5 sh)
(setq ~cmd (getvar "CMDECHO") ~clay (getvar "CLAYER")
~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"  
(setq lay "attributes" collay "8")
(if (not (tblsearch "LAYER" lay))
(command "_LAYER" "M" lay "C" collay "" "")
(command "_LAYER" "T" lay "ON" lay "S" lay ""))

;;; 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)))
(command "RECTANGLE" lop rbp)
(setq e0 (entlast))
;;De rechthoek moet toch ook in het 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))
)


;;; 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" 0);Geen Verify meer?
;;; 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: ?"
blocknaam ""
)
(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))
;;; Definieren attribuut PartQTY
(command "attdef" ""
"PartQTY" "Geef het aantal stukken op: "
"" ""
)
(setq e5 (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 e0 e1 e2 e3 e4 e5 "")
;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 s2 blocknaam)  
(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))
)
(setq NOToke T)
(while NOToke

(initget 1)
(setq s5 (getint "\nGeef het aantal stukken op: "))
(setq sh (getint (strcat "\nGeef nogmaals het aantal stukken op <" (itoa s5) "> op: ")))
(setq NOToke nil)
(if (/= s5 sh) (setq NOToke T))
(if (= sh nil)(setq NOToke nil))
)

(command "insert" blocknaam lop "1" "1" "0" s1 s2 s3 s4 s5)
);end progn
(command "insert" blocknaam lop "1" "1" "0"))
;end if
(command "regenall")
(command "zoom" "e")
(setvar "AFLAGS" ~afl)(setvar "ATTREQ" ~atr)
(setvar "CLAYER" ~CLAY)(setvar "CMDECHO" ~CMD)
(princ)
)
(princ "\n ATTPL8 is geladen; Start met ATTPL8 bij Attdia= 0 of 1")(princ)
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:17:37
Citeer;;; Plaatsen van attributes 3a
;;; Tekenen van rechthoek met ingave van Lengte en Breedte
;;; Gemaakt op: maandag 18 april 2005
;;; Laatste wijziging: woensdag 20 april 2005


(defun c:Test1 (/ ~cmd ~afl NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
 (setq   ~cmd (getvar "CMDECHO")
   ~afl (getvar "AFLAGS")
 )
 (command "ATTDIA" "1")
 (setvar "CMDECHO" 0)
;;; style maakt een nieuwe tekststijl aan: genaamd "attributes"
 (command "style" "attributes" "tahoma" "15" "" "" "" "")
;;; layer maakt een nieuw laag aan: genaamd "attributes"
 (command "layer" "m" "zijkant" "c" "red" "" "")

;;; Tekenen van een rechthoek adhv Lengte en breedte
 (setq lop (getpoint "\nLinker benedenhoekpunt aub: "))
 (setq breedte (getreal "\nGeef breedte in :"))
 (setq hoogte (getreal "\nGeef hoogte in :"))
 (setq rop (polar lop 0 breedte))
 (setq rbp (polar rop (dtr 90) hoogte))
 (setq lbp (polar rbp pi breedte))
 (command "rectangle" lop rbp)
;;; Breedte en Hoogte bepalen
 (setq afrondbreedte (fix (+ breedte 0.5)))
 (setq afrondhoogte (fix (+ hoogte 0.5)))

;;; Inserteerpunt Attribute Materiaal (PartMat)
 (setq   insertmat
    (getpoint
      "\nDuid een invoegpunt voor de attributes aan aub: "
    )
 )
 (setvar "AFLAGS" 0)
;;; 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))
;;; Definieren attribuut PartQTY
 (command "attdef"          ""         "PartQTY"
      "Geef het aantal stukken op: "      ""
      ""
     )
 (setq e5 (entlast))

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

;;; Insert block
;;;  (if (= (getvar "ATTDIA") 1)
;;;    (progn
;;;      (setq s1 (getstring "\nGeef de Materiaalsoort op: "))
;;;      (setq s3 (getstring (strcat "\nGeef de Hoogte <"
;;;              (itoa afrondhoogte)
;;;              "> op: "
;;;           )
;;;          )
;;;      )
;;;      (setq s4 (getstring (strcat "\nGeef de Breedte <"
;;;              (itoa afrondbreedte)
;;;              ">op: "
;;;           )
;;;          )
;;;      )
;;;      (setq s5 (getstring "\nGeef het aantal stukken op: "))
;;;    )
;;;    (command "insert" bestandsnaam lop "1" "1" "0" s1 blocknaam   s3 s4 s5)
;;;  )
 (command "insert" bestandsnaam lop "1" "1" "0")

 (command "filedia" 1)
 (command "regenall")
 (command "zoom" "e")
 (setvar "AFLAGS" ~afl)
 (setvar "CMDECHO" ~CMD)
 (setvar "osmode" 1)
 (princ)
)
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:19:10
Thomas,

Hier krijgt ge uwe dialoogbox al.
Wat ge hier invult komt in uw attribute te staan.
Enkel die refnaam is nog niet gelink naar de bestands naam.
Da lukt mij nog niet :( .
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:24:30
Het is gelukt :!:  :ole: :ole: :ole: :ole: :ole: :ole: :ole: :ole:

Citeer;;; Plaatsen van attributes 3a
;;; Tekenen van rechthoek met ingave van Lengte en Breedte
;;; Gemaakt op: maandag 18 april 2005
;;; Laatste wijziging: woensdag 20 april 2005


(defun c:Test1 (/ ~cmd ~afl NOToke e1 e2 e3 e4 s1 s2 s3 s4 sh)
 (setq   ~cmd (getvar "CMDECHO")
   ~afl (getvar "AFLAGS")
 )
 (command "ATTDIA" "1")
 (setvar "CMDECHO" 0)
;;; style maakt een nieuwe tekststijl aan: genaamd "attributes"
 (command "style" "attributes" "tahoma" "15" "" "" "" "")
;;; layer maakt een nieuw laag aan: genaamd "attributes"
 (command "layer" "m" "zijkant" "c" "red" "" "")

;;; Tekenen van een rechthoek adhv Lengte en breedte
 (setq lop (getpoint "\nLinker benedenhoekpunt aub: "))
 (setq breedte (getreal "\nGeef breedte in :"))
 (setq hoogte (getreal "\nGeef hoogte in :"))
 (setq rop (polar lop 0 breedte))
 (setq rbp (polar rop (dtr 90) hoogte))
 (setq lbp (polar rbp pi breedte))
 (command "rectangle" lop rbp)
;;; Breedte en Hoogte bepalen
 (setq afrondbreedte (fix (+ breedte 0.5)))
 (setq afrondhoogte (fix (+ hoogte 0.5)))

;;; Inserteerpunt Attribute Materiaal (PartMat)
 (setq   insertmat
    (getpoint
      "\nDuid een invoegpunt voor de attributes aan aub: "
    )
 )
 (setq   bestandsnaam
    (getstring 7
          "\nGeef een bestandsnaam voor het block op aub: "
    )
 )

 (setq   blocknaam
    (strcat bestandsnaam)
 )

 (setvar "AFLAGS" 0)
;;; 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: "      blocknaam
      ""
     )
 (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))
;;; Definieren attribuut PartQTY
 (command "attdef"          ""         "PartQTY"
      "Geef het aantal stukken op: "      ""
      ""
     )
 (setq e5 (entlast))

;;; Maken block

 (command "block"
      blocknaam
      lop
      e1
      e2
      e3
      e4
      e5
      (setq crossing (ssget "w" lbp rop))
      ""
 )
 (command "insert" bestandsnaam lop "1" "1" "0")

 (command "filedia" 1)
 (command "regenall")
 (command "zoom" "e")
 (setvar "AFLAGS" ~afl)
 (setvar "CMDECHO" ~CMD)
 (setvar "osmode" 1)
 (princ)
)
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 21 04 2005, 15:24:42
Citaat van: Kenny HThomas,

Hier krijgt ge uwe dialoogbox al.
Wat ge hier invult komt in uw attribute te staan.
Enkel die refnaam is nog niet gelink naar de bestands naam.
Da lukt mij nog niet :( .

Beste Kenny,

Heb je ook AttPL8 gezien.

Groetjes HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:28:53
Sorry HofCAD heb ik nog niet bekeken.
Maar mijn programma gaat nu ook. Zonder problemen.
:wink:
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:31:49
Thomas test het allerlaatste programma uit.
Maar dat vergde enige moeite :!: Bij mij gaat alles goed, test gij ook eens uit hé.
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 21 04 2005, 15:37:12
Citaat van: Kenny HSorry HofCAD heb ik nog niet bekeken.
Maar mijn programma gaat nu ook. Zonder problemen.
:wink:

Beste Kenny,

Maar je krijgt geen mooie afhandeling bij:
1) Als ATTDIA op 0
2) Als de laag van de attributen bevroren is of uit staat

Als hij naast de rechthoek en de attributen nog meer in
zijn block moet plaatsen dan is je oplossing goed, is dit
niet het geval dan lijkt mijn oplossing beter.

Op een of andere manier, krijg ik nooit dezelfde problemen bij het testen als julie laatst melde met attdia op 0

Groetjes HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:38:15
Dat moet Thomas uitmaken hé
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 15:38:17
Aan HofCAD,

Ik ga u morgen laten weten ofdat uw  AttPL8 werkt, samen met attext of -eattext wel te verstaan.
Neem hiervoor graag de tijd om dat allemaal eens te bestuderen.


Aan Kenny,

Ik ga u dat ook morgen laten weten ofdat het allemaal werkt.

Reden waarom ik jullie pas morgen terug ge berichten is het feit dat ik mij vandaag nog moet gaan verantwoorden voor allemaal mijn gedane daden (of daden die ik heb laten doen  :lol: )

Verder wil ik jullie al danken voor de tijd die jullie hierin steken  :vreegoe:

Thx !!!!!!

MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op do 21 04 2005, 15:46:19
Citeer
Beste Thomas,

Ik zie geen verschil in werking onder AutoCAD 2002 en 2004.
Kijk even naar de veranderingen in het geel en rood bij ATTPL8.
Heb je trouwens al AttExp1 (met ATTEXT) en AttExp2 (met -EATTEXT) getest.


Gisteren had ik het probleem dat eenzelfde lisproutine bij AutoCAD 2002 wél het gewenste effect gaf, en in AutoCAD 2004 werd een variabele niet ingevoegd.

Misschien lag het voor de verandering terug aan mij?!

Morgen krijgt u van mij uitgebreid verslag

MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 15:49:53
Allerbeste HofCAD,

Ik heb uw programma eens vlug doorlopen en vraag mij af waarom er nog steeds die verificatie instaat. Dit is toch overbodig als hij via een dialoogbox wil werken.
Denk ik hé. :roll:
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 21 04 2005, 16:04:06
Citaat van: Kenny HAllerbeste HofCAD,

Ik heb uw programma eens vlug doorlopen en vraag mij af waarom er nog steeds die verificatie instaat. Dit is toch overbodig als hij via een dialoogbox wil werken.
Denk ik hé. :roll:

Beste Kenny,

Dat is zo, maar hij heeft zelf nooit  gemeld of hij wil wel of niet met
een dialoogbox wil werken.
Als je dus niet expliciet in een programma aangeeft hoe Attdia moet
staan, wat jij overigens wel gedaan hebt, dan moet je daarop anticiperen
door beide gevallen behandelen.
Nogmaals ik weet eigenlijk nog steeds niet, hoe hij zijn block er
definitief wil laten uitzien en wat de functie ervan is.


Groetjes HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 16:06:22
Citaat van: thomas151283

Maar nu is mijn vraag ofdat het via die dialoogbox kan? Ik vind dat overzichtelijker.  :?

Want ik blijf erbij dat als breedte en hoogte automatisch kunnen worden ingevuld, het ook moet lukken  met de refnaam.

Toch al hartelijk dank,
MVG

Vandaar mijn manier. Staat op vorige pag  :wink:
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 21 04 2005, 16:13:38
Citaat van: Kenny H
Citaat van: thomas151283

Maar nu is mijn vraag ofdat het via die dialoogbox kan? Ik vind dat overzichtelijker.  :?

Want ik blijf erbij dat als breedte en hoogte automatisch kunnen worden ingevuld, het ook moet lukken  met de refnaam.

Toch al hartelijk dank,
MVG

Vandaar mijn manier. Staat op vorige pag  :wink:

Beste Kennny,

Prima, dat hij daarmee geholpen is
Het invullen van de refnaam in attPL8, gebeurt overigens bij  zowel ATTDIA op 0 als op 1 ook automatisch.
Als we beide eerder de echte wensen van Thomas, hadden we hem een stuk sneller kunnen helpen.

Groetjes HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: Kenny H op do 21 04 2005, 16:19:50
Vind ik ook. Maar ge moet weten het is nog steeds een stage hé. Dat evolueert ook elke week. Als Thomas merkt dat er meerder mogelijkheden zijn om tot iets te bekomen en ze allemaal eens wil uitproberen om de handigste er uit te kunnen halen snap ik zijn manier. Ik zou dan ook wel eerst een omschrijven waarom dit gaat dienen en vanwaar hij de gegevens haalt gewoon ter verduidelijking voor ons.
We zijn er toch aan uitgeraakt na 4 pag  :wink:
Ik geef eerlijk toe dat het niet altijd even makkelijk is om zo een programma te schrijven. Het is veel proberen en uittesten en zo leert ge natuurlijk het meest. Spijtig genoeg kruipt daar veel tijd in.
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 21 04 2005, 17:15:19
Beste Kenny en tHomas,

Het beste is, mocht je toch mijn versie willt gebruiken, dat je (initget 1)
er tussen plaatst in het onderstaande gedeelte van het programma.
Dit om te verkomen, dat op de vraag 'aantal stukken' de gebruiker een <Enter> geeft.
Wat het afbreken van het programma tot gevolg heeft.
In de volledige listing van Attpl8 heb ik dat ook al reeds gedaan.

Groetjes HofCAD CSI


(setq NOToke T)
(while NOToke
(initget 1)
(setq s5 (getint "\nGeef het aantal stukken op: "))
(setq sh (getint (strcat "\nGeef nogmaals het aantal stukken op <" (itoa s5) "> op: ")))
(setq NOToke nil)
(if (/= s5 sh) (setq NOToke T))
(if (= sh nil)(setq NOToke nil))
)
Titel: Bepalen waar op te slaan
Bericht door: thomas151283 op vr 22 04 2005, 07:57:47
Beste HofCAD CSI,

Zoals beloofd krijgt u van mij verslag van uw programmaties:

1) ATTPL8
=> Bij mij werkt dit probleemloos, zowel na 1x, als na 35x. De attributes die direct mogen ingevuld worden doen dit ook continu.

2) ATTEXP1
=> Dit werkt ook zeer goed, heeft nooit ergens een foutmelding gegeven.
=> Het enige spijtig hieraan is het feit dat het een *.TXT bestand is. Dit *.TXT bestand moet achteraf nog omgezet worden tot een *.CSV bestand. Omdat in de volgende stap van mijn productieproces dit CSV-bestand in een ander programma moet ingelezen worden.

3) ATTEXP2
=> Dit geeft een foutmelding, (template niet gevonden), zelfs na aanmaken van het BLK-bestand blijft deze foutmelding verschijnen.
Heb dit dus niet verder kunnen uittesten.

4) Waarom is Kenny zijn oplossing beter als er nog andere elementen, buiten block en attributes, in de rechthoek dienen te komen?
Dit is normaal nog de bedoeling dat er nog andere elementen in dienen te komen (zoals boorgaten, drevelgaten, ed. ...)

5) Mijn probleem tussen AutoCAD 2002 en 2004 is ook opgelost!
Het was gewoon de attdia=0 die verkeerd stond.

6) Ik heb misschien niet alle nodige informatie gegeven die nuttig zou geweest zijn om alles vlotter te laten verlopen. Maar ik ontdek pas gaandeweg welke mogelijkheden er allemaal met VLISP mogelijk zijn. En zo heb ik ondervonden hoe het soms beter kan gebeuren.

Toch zijn jullie beiden hartelijk bedankt voor de bereidwillige medewerking!!

MVG,
Thomas
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op vr 22 04 2005, 09:21:08
Citaat van: thomas151283Beste HofCAD CSI,

Zoals beloofd krijgt u van mij verslag van uw programmaties:

Beste Thomas,

Thomas schreef:
2) ATTEXP1
=> Dit werkt ook zeer goed, heeft nooit ergens een foutmelding gegeven.
=> Het enige spijtig hieraan is het feit dat het een *.TXT bestand is. Dit *.TXT bestand moet achteraf nog omgezet worden tot een *.CSV bestand. Omdat in de volgende stap van mijn productieproces dit CSV-bestand in een ander programma moet ingelezen worden.

HofCAD schrijft:
Zoals ik eerder reeds geschreven heb, moet je dit tekst bestand eigenlijk
handmatig in Excel inladen om een wizard te krijgen voor omzetting naar
een Excelbestand.

Thomas schreef:
3) ATTEXP2
=> Dit geeft een foutmelding, (template niet gevonden), zelfs na aanmaken van het BLK-bestand blijft deze foutmelding verschijnen.
Heb dit dus niet verder kunnen uittesten.

HofCAD schrijft:
Zoals ik eerder reeds geschreven heb, maar zelfs ook in de foutmelding
staat in de Meldingsbox en in de foutmelding staat op de commandoregel,

(er staat namelijk bestandsnaam  met directory die gemist is)
moet je niet alleen het BLK-bestand aanmaken maar er ook voor zorgen
dat het in de juiste directory(map) staat.
Zie in ATTEXP2:(setq DirTemplate "C:\\temp\\")
De inhoud van dit bestand is natuurlijk bepalend, wat uiteindelijk in
in het CSV-bestand komt.

Thomas schreef:
4) Waarom is Kenny zijn oplossing beter als er nog andere elementen, buiten block en attributes, in de rechthoek dienen te komen?
Dit is normaal nog de bedoeling dat er nog andere elementen in dienen te komen (zoals boorgaten, drevelgaten, ed. ...)

HofCAD schrijft:
Zoals ik meerdere malen heb geschreven, is het mij is het nog steed niet duidelijk wat je allemaal precies in je block wil stoppen, en hoe het uiterlijk er definitief moet uit ziet en wat je er mij wil doen (Bijv er een oppervakte in excel mee laten uitrekenen?)
In mijn geval wordt de rechthoek automatisch geselecteert, en kan er
in mijn versie niet iets extra (eventueel onnodig of fout meegenomen
worden).
Natuurlijk kun je de regel van mij:
(command "block" blocknaam lop e0 e1 e2 e3 e4 e5 "")
veranderen  in
(command "block" blocknaam lop e0 e1 e2 e3 e4 e5 (setq crossing (ssget "w" lbp rop))  "")
waardoor enerzijds de rechthoek automatisch geselecteerd wordt en
je ook nog iets extras in je block kunt stoppen.
Je hebt dan echter wel het gevaar, dat je er iets onnodigs of iets fouts erin stopt.(dat is dus de afweging)
Mijn versie bevat overigens nog een aantal extra zaken, om te voorkomen
dat het programma niet goed werkt(zie echter ook onder PS3).

Thomas schreef:
5) Mijn probleem tussen AutoCAD 2002 en 2004 is ook opgelost!
Het was gewoon de attdia=0 die verkeerd stond.

HofCAD schrijft:
In beide versies moet mijn programma hetzelfde werken, maar in mijn
programma heeft de gebruiker de keuze mogelijkheid om er voor te kiezen om volledig  volgens de commandoregel te werken.

Thomas schreef:
6) Ik heb misschien niet alle nodige informatie gegeven die nuttig zou geweest zijn om alles vlotter te laten verlopen. Maar ik ontdek pas gaandeweg welke mogelijkheden er allemaal met VLISP mogelijk zijn. En zo heb ik ondervonden hoe het soms beter kan gebeuren.

HofCAD schrijft:
Dat is wel vaker op dit forum het geval, en daardoor krijgt men dus
vaak ook een antwoord uit eeen andere invalshoek dan werd verwacht.
Zeker voor zo'n dom blondje als ik :oops:  ben, wordt het dan heel erg moeilijk.
Visual Lisp is of kan voor een beginnende programmeur wel eens te veel van het goede zijn.
Door dit alles, kan dit forum misschien wel juist interessant zijn voor een Cad Scene Investigator.

Dus beste Thomas, nogmaals veel succes met je studie.

Groetjes HofCAD CSI

PS1 Nogmaals als je ATTEXP2 uitprobeert, met een juist template BLK-bestand in de juiste directory, gaat het goed.
Je krijgt dus meteen alles in de juiste kolommen.
PS2 Nogmaals wil je mijn versie van ATTPL8 gaan
gebruiken, dan wel zoals eerder geschreven (initget 1) er tussen
plaatsen.
PS3 Je moet eigenlijk ook nog je eigen *ERROR*
routines schrijven, want als de versie van Kenny of mij worden afgebroken worden de AutoCAD variabelen niet terug gezet.

http://www.autocadforum.nl/autocadforum/viewtopic.php?p=2207#2207
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op di 26 04 2005, 16:14:25
Citaat van: HofCAD
Citaat van: thomas151283Beste HofCAD CSI,

Zoals beloofd krijgt u van mij verslag van uw programmaties:

Beste Thomas151283 en Belangstellende,

Op 25 april 2005 is de honderste aflevering van Crime Scene Investigation(CSI)
op TV uitgezonden, waar forensisch expert Dhr. Gill Grissom en zijn
collega's hun onderzoekingen tonen.
Als Cad Scene Investigator lijkt het mij dan een juist moment, om de stand
van mijn laatste onderzoek te tonen.
Het lijkt mij dat in de Zip op onderstaande site, een betere versie zit van
een nog niet afgerond onderzoek.
http://www.autocadforum.nl/autocadforum/viewtopic.php?p=2218#2218
Verder is daarin aangegeven, wat er nog onderzocht moet worden.

Groetjes HofCAD CSI
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op wo 27 04 2005, 08:53:46
Citaat van: HofCAD

Beste Thomas151283 en Belangstellende,

Op 25 april 2005 is de honderste aflevering van Crime Scene Investigation(CSI)
op TV uitgezonden, waar forensisch expert Dhr. Gill Grissom en zijn
collega's hun onderzoekingen tonen.
Als Cad Scene Investigator lijkt het mij dan een juist moment, om de stand
van mijn laatste onderzoek te tonen.
Het lijkt mij dat in de Zip op onderstaande site, een betere versie zit van
een nog niet afgerond onderzoek.
http://www.autocadforum.nl/autocadforum/viewtopic.php?p=2218#2218
Verder is daarin aangegeven, wat er nog onderzocht moet worden.

Groetjes HofCAD CSI

Beste Thomas151283 en Belangstellende,

Het programma AE3 om attributen zonder de commando's ATTEXT en EATTEXT,
naar een XLS-bestand te schrijven is klaar.
http://www.autocadforum.nl/autocadforum/viewtopic.php?p=2223#2223


Groetjes HofCAD CSI

PS1 De stand van het onderzoek is te lezen met het commando THOMINFO.
Naschrift:
PS2 In versie 2.2 zit een fout in AE3.

http://www.autocadforum.nl/autocadforum/viewtopic.php?t=472
Titel: Bepalen waar op te slaan
Bericht door: WebRacer op zo 26 06 2005, 18:14:19
(defun c:exportatt ()
(setq filenam (strcat (getvar "DWGPREFIX") (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4))))
(setq filenam (getfiled "Geef naam en pad op voor attributes-file-eattext" filenam "csv" 5))
(command "-eattext" "C" "Y" "Y" "" "CSV" filenam)
)
Titel: Bepalen waar op te slaan
Bericht door: HofCAD op do 08 09 2005, 17:06:14
Citaat van: HofCAD
Citaat van: HofCAD

Beste Thomas151283 en Belangstellende,

Op 25 april 2005 is de honderste aflevering van Crime Scene Investigation(CSI)
op TV uitgezonden, waar forensisch expert Dhr. Gill Grissom en zijn
collega's hun onderzoekingen tonen.
Als Cad Scene Investigator lijkt het mij dan een juist moment, om de stand
van mijn laatste onderzoek te tonen.
Het lijkt mij dat in de Zip op onderstaande site, een betere versie zit van
een nog niet afgerond onderzoek.
http://www.autocadforum.nl/autocadforum/viewtopic.php?p=2218#2218
Verder is daarin aangegeven, wat er nog onderzocht moet worden.

Groetjes HofCAD CSI

Beste Belangstellende,

Het is weer een tijdje geleden, dat ik julie mijn onderzoek, naar het overbrengen AutoCAD
attribuutwaarden in een Excel rekenblad, heb geevalueerd.
Voor mensen die ThomCAD nog niet kennen, kan men zeggen dat ThomCAD eigenlijk
een grote Tip is met betrekking tot het bovenstaande onderwerp.

*************************************************************
De ontwikkelingsfase van ThomCAD 07/09-2005
*************************************************************
- In de laatste versie van ThomCAD kan men ThomCAD configureren en
aanpassen (customizen) in de file HofProg.cfg.
De naam en de plaats van bijv. file (de directory) of bijv. de
instelling van een Laagnaam en kleur, wordt met de procedure
$HofCfg uitgelezen.
Hierdoor is het tevens mogelijk om van ThomCAD een VLX-applicatie
maken, terwijl configureren en aanpassen mogelijk blijft.
- Verder is er voor gekozen, om algemene procedures in de file
HofMain.lsp te zetten, waardoor in de toekomst andere programma's
kleiner kunnen worden.
- Ook is er nieuw programma-onderdeel AE1X toegevoegt, waardoor het
tekst bestand van ATTEXT omgezet wordt naar een XLS-bestand.
Hierdoor wordt bij opening in Excel wel alles automatisch in
kolommen opgedeeld.
- Een van de grootste toevoegingen zijn de programma'a MABCHG,
TXT2MAB, XLS2MAB en MABUPD, waarmee men veranderingen van
attribuutwaarden buiten AutoCAD(bijv. met Excel) automatisch
kan laten doorvoeren in de AutoCADtekening.
- Het programmaonderdeel waarin met Visual Lisp een interactieve
koppeling met Excel tot stand komt, is nog niet toegevoegd.
Daar o.a. de beschrijving van de bibliotheek nog niet af is, en
er nog naar een methode wordt gezocht om met Visual Lisp macro's
te schrijven in Excel.
*************************************************************
Installatie van ThomCAD
*************************************************************
Om ThomCAD zonder veel aanpassingen te laten werken, kan men de
Zip-file het beste laten uitpakken in de directory c:\HofProg.
Men krijgt dan daar de volgende bestanden EXTATTR.XLS, HofMain.VLX
HoFProg.CFG, ThomCAD.lsp en ThomCAD.txt.
Daarna moet men binnen AutoCAD deze directory in het zoekpad
laten opnemen.
Dit doet men met het commando OPTIONS bij de tab 'Files' en de
rubriek 'Support Files Search Path' met de knop 'Add' een
verwijzing maken naar de directory c:\HofProg.
Hierna moet men met NotePAD(Kladblok) de file HofProg.cfg open,
en vooral de Excel directory ;DirExcel controleren.
Indien deze niet overenkomt met uw systeem, dan moet men deze
in de confugatiefile aanpassen.
Hierna kan met het commando APPLOAD de file ThomCAD.lsp laden,
waarna automatisch ook de file HofMain.lsp wordt geladen.
Het beste is dan eerst de helpfile ThomCAD.txt te lezen, of het
programmacommando ThomInfo te gebruiken.
Na het doorlezen kan men dan bij de Algemene startprocedure,
beginnen vanaf het aanmaken van de MAB-blocks met het programma-
commando MAB.
*************************************************************
Thomcad.zip op http://www.savefile.com/files.php?fid=4612921

Groetjes HofCAD CSI

PS Als je AutoCAD 2005 gebruikt, kun je me dan melden of dat daar
bij het commando -EATTEXT de vraag gesteld wordt:
'Do you want to use a template? [Yes/No]