CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: designer68 op ma 18 07 2011, 10:09:01

Titel: Opgelost !!!!!! Block met attribuut
Bericht door: designer68 op ma 18 07 2011, 10:09:01
mensen,

Ik heb in mijn tekening een aantal blocks staan (drukunits).
Nu wil ik graag dat er in dit blok de attributen maaiveld en nummer aan komen.
Als ik 1 block maak en voorzie van de attributen, wilde ik de drukunits in de tekening vervangen door dit block.
Helaas raak ik dan de attributen kwijt.

Wie kan me vertellen hoe dit kan?
Titel: Re:Block met attribuut
Bericht door: HofCAD op ma 18 07 2011, 11:23:17
Beste Designer68,

Als je een block herdefinieerd (waarbij je iets toevoegd , verwijderd of veranderd aan de attributen),
dan moet je daarna met het commando ATTSYNC de attributen synchroniseren.
Dit kan je trouwens ook doen in de dialoogbox van het command BATMAN en de knop Sync.

Met vriendelijke groet, HofCAD CSI.

PS Zie bijv. http://www.cadsite.be/smf/index.php?topic=1691.msg8875#msg8875
http://www.cadsite.be/smf/index.php?topic=4158.msg21526#msg21526
http://www.cadsite.be/smf/index.php?topic=3876.msg19844#msg19844
http://www.cadsite.be/smf/index.php?topic=2780.msg14268#msg14268
http://www.cadsite.be/smf/index.php?topic=1253.msg7170#msg7170
Titel: Re:Block met attribuut
Bericht door: designer68 op di 19 07 2011, 11:08:56
Dank jullie, tot zover is het klaar.
Bij een ander blok die ik heb, (moederkasten) moeten dezelfde attributen komen.
Kan ik die met blockeditor gewoon van het ene blok naar het andere kopieren?

Verder wil ik graag het invoerveld op de command bar hebben en had ik gedaan met attdia op 1 te zetten, maar dan veranderd er niks en geeft hij nog steeds het dialoogscherm.

Enig idee hoe dit kan?
Titel: Re:Block met attribuut
Bericht door: HofCAD op di 19 07 2011, 12:02:00
Beste Designer68,

Zet de AutoCAD variabele Attdia op 0.
je kan 1 en 0 vertalen naar Ja en Nee.
Dus Attdia 0 vertaalt geeft: "Geef bij Attributen een dialoogbox Nee".

Met vriendelijke groet, HofCAD CSI.
Titel: Re:Block met attribuut
Bericht door: designer68 op di 19 07 2011, 12:21:34
Hofcad,


Als ik Attdia op 0 zet en daarna op het block met attribuut dubbelklik krijg ik als nog het dialoogscherm.

Heel apart.
Titel: Re:Block met attribuut
Bericht door: HofCAD op di 19 07 2011, 12:33:10
Beste Designer68,

De AutoCAD variabele Attdia geeft een setting voor het invoegen van blocks
met attributen. (Dus niet voor bewerken!)
Gebruik ipv de commando's EATTEDIT en ATTEDIT eventueel het commando -ATTEDIT.
http://www.cadsite.be/smf/index.php?topic=2845.msg14581#msg14581

Met vriendelijke groet HofCAD CSI.
Titel: Re:Block met attribuut
Bericht door: designer68 op vr 22 07 2011, 08:15:12
Beste mensen

Ik ben bezig met een heleboel block die ik heb voorzien van attributen.
Het gros van de attributen heb ik al ingevuld, maar diverse moeten nog.
Is er een mogelijkheid om de blocks met niet ingevulde attributen te selecteren of een cirkel erom te laten zetten of iets dergelijks?
Mijn werkgebied waar ze in zitten beslaat een behoorlijk groot gebied en het zijn 900 blocks voorzien van attribuut die erin zitten.

Dus kort gezegd mijn vraag: Hoe vindt ik de niet ingevulde blocks in mijn werkgebied?


groet jan-pieter
Titel: Re:Block met attribuut
Bericht door: HofCAD op vr 22 07 2011, 09:15:22
Citaat van: designer68 op vr 22 07 2011, 08:15:12

Dus kort gezegd mijn vraag: Hoe vindt ik de niet ingevulde blocks in mijn werkgebied?

groet jan-pieter
Beste Designer68,

Probeer SRXTEXT.
http://www.cadesigner68dforum.cz/cadforum_en/how-to-find-blocks-with-an-empty-not-filled-in-attribute-tip7892
http://www.cadstudio.cz/en/download.asp?file=srxTEXT
Indien je reeds ingevulde attributen een gelijke waarde hebben, dan kun je ook
het AutoCAD commando FIND gebruiken.
http://www.cadforum.cz/cadforum_en/find-and-select-blocks-with-a-given-attribute-tip7669

Met vriendelijke groet, HofCAD CSI.

PS Reeds ingevulde block references zou ik op een aparte laag zetten, die OFF
of FROZEN staat.
Titel: Re:Block met attribuut
Bericht door: designer68 op vr 22 07 2011, 09:53:32
Hofcad


ik ga het proberen en laat het weten.

bedankt in elk geval.

groeten jan-pieter
Titel: Re:Block met attribuut
Bericht door: designer68 op vr 22 07 2011, 12:08:30
helaas werkt het niet voor wat ik zoek.
het zijn blocks met attributen zoals maaiveld hoogte en nummer.
bijv. D 196-1, D172-3 (verschillende series dus) en M 122, M133 etc.
dochter en moederkasten. van drukunits.

misschien kan ik met attout een lijst maken en daar de lege values een bepaalde waarde invullen (een woord of zo) en ga ik ze importeren en dan filteren op attribuut value en dan in een andere layer zetten.

groet jan-pieter
Titel: Re:Block met attribuut
Bericht door: designer68 op ma 25 07 2011, 08:14:29
Hofcad,


Ik heb even een txt bestand bijgevoegd die ik heb gemaakt met attout.
In de eerste kolom staat de HAndle, die refereert naar een block.
Kan ik deze handle als label bij het block zetten, want ik weet niet welke Handle welk block is anders.
Op die manier kan ik met Find namelijk naar de niet ingevulde values zoomen via de lijst.

Heb je hier een idee over?

Jan-Pieter
Titel: Re:Block met attribuut
Bericht door: HofCAD op ma 25 07 2011, 11:05:01
Beste Designer68,

Is het zo, dat in je JP.txt er maar 1 block reference is met niet ingevulde waarden?

Met vriendelijke groet, HofCAD CSI.

PS Stel dat in c:\Temp\JP.txt alleen maar die block references staan, waarop je wil inzoomen.
Je kan in Notepad de overbodige regels verwijderen.
Je kan dan via noatt zoomen:

(defun c:noatt (/ @STR2LST File i FileDes S ent)
 (defun @STR2LST (delim str / hlst n)
   (setq delim (ascii delim))
   (while (setq n (vl-string-position delim str))
     (setq hlst (cons (substr str 1 n) hlst)
   str (substr str (+ 2 n))
     )
   )
   (reverse (cons str hlst))
 )
 (setq File "c:\\Temp\\JP.txt"
 )
 (setq i (getint "Geef een volgnummer: "))
 (if (findfile File)
   (progn
     (setq fileDes (open File "r"))
     (repeat (+ i 1)
(setq s (read-line FileDes))
     )
     (if s
(progn
 (setq s (substr (car (@STR2LST "\t" s)) 2))
 (setq ent (handent s))
 (command "_.ZOOM" "_O" ent "")
)
     )
   )
   (princ (strcat "\nFile " File " not exist."))
 )
 (if FileDes
   (close FileDes)
 )
)

of je kan via NoAttL de block references op een andere laag zetten
(defun c:NoAttL (/ @STR2LST File FileDes S ent Lay ColLay LtLay LwLay)
 (defun @STR2LST (delim str / hlst n)
   (setq delim (ascii delim))
   (while (setq n (vl-string-position delim str))
     (setq hlst (cons (substr str 1 n) hlst)
   str (substr str (+ 2 n))
     )
   )
   (reverse (cons str hlst))
 )
 (setq File "c:\\Temp\\JP.txt"
 )
 (setq Lay    "NietKlaar"
ColLay "1"
LtLay  "Continuous"
LwLay  0.25
 )
 (if (not (tblsearch "LAYER" Lay))
   (command "_.LAYER" "_M" Lay "_C" ColLay "" "_L" LtLay "" "_LW" LwLay
    "" "")
   (command "_.LAYER" "_T" Lay "_ON" Lay "_S" Lay "")
 )
 (if (findfile File)
   (progn
     (setq fileDes (open File "r"))
     (while (setq s (read-line FileDes))
(if s
 (progn
   (setq s (substr (car (@STR2LST "\t" s)) 2))
   (setq ent (handent s))
   (command "_.CHPROP" ent "" "_LA" Lay "")
 )
)
     )
   )
   (princ (strcat "\nFile " File " not exist."))
 )
 (if FileDes
   (close FileDes)
 )
)
Titel: Re:Block met attribuut
Bericht door: HofCAD op ma 25 07 2011, 12:07:05
Beste Designer68,

Je kan natuurlijk ook je JP.txt veranderen en daar waar nog geen attribuutwaarden
bijv. het volgende invullen:
'30141   testaangepast   0,0   Nietklaar
Daarna het commando ATTIN gebuiken en daarna het commando FIND
gebruiken en zoeken naar de tekst Nietklaar.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:Block met attribuut
Bericht door: designer68 op ma 25 07 2011, 12:09:14
Hofcad,


De lisp Noattl.lsp werkt wel, die gooit alle blocks in de layer Niet Klaar.
Hij kijkt niet naar ingevulde of niet ingevulde velden van de attributen.
Wat deze routine doet is dus alle blocks in de layer niet klaar zetten.

De lisp Noatt wil hier niet laden.

Hoe kom ik erachter welke HAndle uit de txt hoort bij welk block?
als ik in de attout bestand wat in wil vullen is dat moeilijk omdat ik niet weet welke handle refereert naar wel block.


groet, jan-pieter.
Titel: Re:Block met attribuut
Bericht door: designer68 op ma 25 07 2011, 12:11:04
Ja dit is denk ik de beste methode.
dank je.

De handle in het textbestand kan ik niet in mijn tekening laten zien bij het block zeker?

Titel: Re:Block met attribuut
Bericht door: HofCAD op ma 25 07 2011, 12:12:20
Citaat van: designer68 op ma 25 07 2011, 12:09:14
Hofcad,

De lisp Noattl.lsp werkt wel, die gooit alle blocks in de layer Niet Klaar.
Hij kijkt niet naar ingevulde of niet ingevulde velden van de attributen.
Wat deze routine doet is dus alle blocks in de layer niet klaar zetten.
ik heb er bij vermeldt:
PS Stel dat in c:\Temp\JP.txt alleen maar die block references staan, waarop je wil inzoomen.
Je kan in Notepad de overbodige regels verwijderen.
De lisp Noatt wil hier niet laden. (Dit snap ik niet.  Probeer NaAttZ uit attachment in Antwoord #17)

Hoe kom ik erachter welke HAndle uit de txt hoort bij welk block?
als ik in de attout bestand wat in wil vullen is dat moeilijk omdat ik niet weet welke handle refereert naar wel block.

groet, jan-pieter.
Citaat van: designer68 op ma 25 07 2011, 12:11:04
Ja dit is denk ik de beste methode.
dank je. (wat is de beste methode)

De handle in het textbestand kan ik niet in mijn tekening laten zien bij het block zeker? (waarvoor)
Beste Designer68,

Je moet in JP.txt de regels verwijderen van de block references die ingevuld zijn
om NoAtt.lsp met de commando's NoAttZ en NoAttL te gebruiken.(zie attachment)

Stel je hebt:
'30141   testaangepast   0,0   Nietklaar
Dan is 30141 de handle
en je krijgt de entiteit via
(setq ent (handent "30141"))
of via
(setq s  "30141" ent (handent s))
In zoomen gaat dan via:
ZOOM
Specify corner of window, enter a scale factor (nX or nXP), or
[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: O

Select objects:  !ent
<Entity name: ??????????>
1 found

Select objects:
of via:
(command "_.ZOOM" "_O" ent "")

Met vriendelijke groet, HofCAD CSI.

PS Voor NoAtt.lsp zie attachment in Antwoord #17
Titel: Re:Block met attribuut
Bericht door: designer68 op ma 25 07 2011, 13:20:01
Hofcad,


bedankt zover, maar jij vraagt waarvoor ik het label van de handle wil tonen.
De reden is dat ik een referentiebestand heb waar bij de drukunits nummers staan (dezelfde die ik via attribuut aan het block toevoeg).
Als hij mij het label laat zien van de handle kan ik de attout lijst  op die manier aanvullen omdat ik kan zien dat de handle op dezelfde plaatst staat als bijv nummer 3 in de referentie.
Op die manier kan ik de lijst gewoon intypen dan omdat ik weet welke handle welk unitnummer is.
Daarna kan ik hem dan met attin inlezen en zijn de values ook ingevuld.

Jan-Pieter
Titel: Re:Block met attribuut
Bericht door: HofCAD op ma 25 07 2011, 13:28:47
Beste Designer68,

Heb je al NoAttZ geprobeerd uit NoAtt.lsp?

Als je NoAttL van NoAtt.lsp gebruikt bevries je daarna de laag
waarop deblock references oorspronkelijk stonden, en diegene
die dan nog zichtbaar zijn moet je bewerken.

Met vriendelijke groet, HofCAD CSI.

PS1 In mijn programma zou je ook een regel kunnen plaatsen.
(command "_.TEXT" pause "100" "0" S)
De teksthoogte 100 is door mij willekeurig gekozen, omdat bijna niemand
een echte tekening durft te plaatsen.
De aanname is hierbij dat de actieve tekststijl een variabele hoogte heeft.
Zie NoAttT in NoAtt.lsp.(zie attachment)
Je moet in JP.txt de regels verwijderen van de block references die ingevuld zijn
om NoAtt.lsp met de commando's NoAttZ, NoAttL en NoAttT te gebruiken.


PS2 Het commando HAND van Hand.lsp vraagt om een handle
en zoomt dan in op de entiteit en highlight het.

PS3 Het commando WRBLKHAN van WrBlkHan.lsp plaatst bij alle
block references van block "testaangepast" de handle met een
teksthoogte van 100.
De aanname is hierbij dat de actieve tekststijl een variabele hoogte heeft.
Titel: Re:Block met attribuut
Bericht door: designer68 op di 26 07 2011, 07:23:33
Heel erg bedankt voor je hulp HofCAD.
Hier kan ik mee uit de voeten.

Ik zal zelf ook eens een cursus lisp/vba gaan volgen, want is onmisbaar.

Groet Jan-Pieter