FastFiber

ID-nummer van NamedObjects

Gestart door HofCAD, ma 09 01 2006, 14:33:25

Vorige topic - Volgende topic

HofCAD

Beste CADliefhebbers,

De beste wensen nog voor het nieuwe jaar.

Als je in AutoCAD 2005 of in AutoCAD 2006 met het commando FIELD van Field Category: Objects
naar Field names: NamedObject gaat  en je kiest voor Block, Dimstyle, Layer, Linetype, Tablestyle,
Textstyl of View krijg je zoiets als onderstaande veldcode:

%<\AcObjProp Object(%<\ObjId 2130691824>%).Name>%")

Deze code beschrijft het veld voor de respectievelijk gekozen symbooltabel.
Als men deze code heeft, dan kan men ook met bijvoorbeeld het commando TEXT het des betreffende veld plaatsen.
Graag zou ik willen weten hoe AutoCAD in het bovenstaande voorbeeld het IDnummer 2130691824 heeft bepaald.
Mijn vraag gaat dus over de NamedObjects en niet over Objects.
Dit wil ik graag weten, om via AutoLISP o.a. tabelwaarden in te vullen.
Bij voorbaat mijn dank.

Groetjes HofCAD CSI


ACADcadabra

WebRacer

Autocad's wegen zijn on-door-grondelijk bij momente, maar wat jij hier vraagt is ook niet meer normaal....
HofCAD, dit kom je volgens mij nooit te weten, er zit een logica in, maar die hangt af van 1000 dingen, zoals commando-ingave, scrollen en klikken muis..
maken en deleten van objecten, die niet bij nummer verwijderd worden.... enz enz...
?

HofCAD

Citaat van: WebRacer op zo 29 01 2006, 10:50:44
Autocad's wegen zijn on-door-grondelijk bij momente, maar wat jij hier vraagt is ook niet meer normaal....
HofCAD, dit kom je volgens mij nooit te weten, er zit een logica in, maar die hangt af van 1000 dingen, zoals commando-ingave, scrollen en klikken muis..
maken en deleten van objecten, die niet bij nummer verwijderd worden.... enz enz...


Beste WebRacer,

Volgens mij moet het ObjectID op te vragen zijn met visual Lisp.

Groetjes HofCAD CSI
ACADcadabra

HofCAD

#3
Citaat van: HofCAD op ma 30 01 2006, 16:28:16
Citaat van: WebRacer op zo 29 01 2006, 10:50:44
Autocad's wegen zijn on-door-grondelijk bij momente, maar wat jij hier vraagt is ook niet meer normaal....
HofCAD, dit kom je volgens mij nooit te weten, er zit een logica in, maar die hangt af van 1000 dingen, zoals commando-ingave, scrollen en klikken muis..
maken en deleten van objecten, die niet bij nummer verwijderd worden.... enz enz...


Beste WebRacer,

Volgens mij moet het ObjectID op te vragen zijn met visual Lisp.

Groetjes HofCAD CSI

Beste WebRacer,

Volgens mij moet het ObjectID op te vragen zijn met  zo iets als onderstaand:

(defun c:test()
(vl-load-com)
(vlax-for x (vla-get-Layers
   Â  (vla-get-ActiveDocument
   Â    (vlax-get-acad-object)
   Â  )
   )
(setq ObjID (vla-get-ObjectID x))
)
(command "_TEXT" '(30 30) "5" "0"
(strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa objID) ">%).Name>%"))
)


Maar dit geeft jammer genoeg alleen  slechts de laatst aangemaakte laag.

Groetjes HofCAD CSI
ACADcadabra

bart

Beste hofcad
Is dit het zelfde als de entetienaam die je via lisp kan opvragen met entget of iets anders ?

Uit je eerste vraag begreep ik dat je een manier zoekt om het nummer te voorspellen
(dat lijkt me zo goed als onmogelijk zonder de source code van dwg te kennen.)
mischien dat je dan eens een visje moet uitgooien bij de makers van het open source dwg formaat.

Van vba heb ik niet genoeg kaas gegeten.
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

HofCAD

#5
Citaat van: bart op di 31 01 2006, 08:07:56
Beste hofcad
Is dit het zelfde als de entetienaam die je via lisp kan opvragen met entget of iets anders ?

Uit je eerste vraag begreep ik dat je een manier zoekt om het nummer te voorspellen
(dat lijkt me zo goed als onmogelijk zonder de source code van dwg te kennen.)
mischien dat je dan eens een visje moet uitgooien bij de makers van het open source dwg formaat.

Van vba heb ik niet genoeg kaas gegeten.


Beste Bart,

Mijn vraag ging over NamedObjects en niet over Objects.
Bij Objects is het inderdaad zo dat de ObjId gelijk is aan het decimale equivalent
van het hexadicimale entiteitsnummer.
Dus dat was ondanks mijn blondheid een makkie.
Aangezien een Block definitie, Dimstyle, Layer, Linetype, Tablestyle, Textstyl en View
volgens mij geen entiteitsnummers hebben , vond ik in eerste instantie geen oplossing.
Nu heb ik nog het probleem met de tablestyl, daar

(defun c:test2()
(vl-load-com)
(setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq TabCol (vla-get-TableStyles ActDoc))
(setq TabSty (vla-Item TabCol "Standard"))
(stq ObjID (vla-get-ObjectID TabSty))
(command "_TEXT" '(30 30) "5" "0"
(strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa objID) ">%).Name>%"))
)


niet wil werken, terwijl soort gelijks bij Block, Dimstyle, Layer, Linetype, Textstyl en View
wel wil werken.
Er zijn overigens meer mensen die met vla-get-TableStyles problemen hebben
http://groups.google.com/group/autodesk.autocad.customization/browse_frm/thread/fcd0c2ae9ac0b4dc/5845c23f2325369f?lnk=st&q=group%3Aautodesk.autocad.customization+%22vla-get-TableStyles%22&rnum=1&hl=en#5845c23f2325369f
Hoe moet ik een visje uitgooien bij de makers van het open source dwg formaat.

Groetjes HofCAD CSI

Het spijt me dat ik niet al te slim ben, maar je weet het :
Ik ben blond. :oops:
ACADcadabra

Joop

HofCAD,

Misschien dat deze code je helpt.


(defun c:test ()
  (vl-load-com)
  (vlax-for x (vla-get-Layers
(vla-get-ActiveDocument
  (vlax-get-acad-object)
) ;_ end of vla-get-ActiveDocument
      ) ;_ end of vla-get-Layers
    (setq ObjID (vla-get-ObjectID x))
    (princ ObjID)

    (command "_TEXT"
     '(30 30)
     "5"
     "0"
     (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa objID) ">%).Name>%" ObjID)
    ) ;_ end of command
  ) ;_ end of vlax-for
) ;_ end of defun


De vlax-for werkt in principe hetzelfde als de mapcar en of foreach.
Je moet dus je bewerking (of een verwijzing naar de bewerking) binnen de vlax-for functie plaatsen.
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

HofCAD

Citaat van: Joop op do 02 02 2006, 08:20:36
HofCAD,

Misschien dat deze code je helpt.

De vlax-for werkt in principe hetzelfde als de mapcar en of foreach.
Je moet dus je bewerking (of een verwijzing naar de bewerking) binnen de vlax-for functie plaatsen.

Beste Joop,

Zoals ik boven reeds vermelde, is voor mij nu het probleem slechts van de tablestyl.
Want zo iets als (vla-get-TableStyl ......) of (vla-get-TableStyls ......) kent lisp waarschijnlijk niet.

http://groups.google.com/group/autodesk.autocad.customization/browse_frm/thread/fcd0c2ae9ac0b4dc/5845c23f2325369f?lnk=st&q=group%3Aautodesk.autocad.customization+%22vla-get-TableStyles%22&rnum=1&hl=en#5845c23f2325369f

Maar toch wil je ik bedanken , voor je programma.
Er staat overigens in de regel met strcat  een slordigheids foutje.


(defun c:test ()
  (vl-load-com)
  (setq i 0)
  (vlax-for x (vla-get-Layers
(vla-get-ActiveDocument
  (vlax-get-acad-object)
) ;_ end of vla-get-ActiveDocument
      ) ;_ end of vla-get-Layers
    (setq ObjID (vla-get-ObjectID x))
    (princ ObjID)

    (command "_TEXT"
     (list 30 (+ 50 (* i 10)))
     "5"
     "0"
     (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa objID) ">%).Name>%")
    ) ;_ end of command
(setq i (1+ i))
  ) ;_ end of vlax-for
) ;_ end of defun


Met vriendelijke groet, HofCAD CSI
ACADcadabra

bart

Citaat van: HofCAD op di 31 01 2006, 16:55:00

Hoe moet ik een visje uitgooien bij de makers van het open source dwg formaat.


http://www.opendesign.com/

Mischien vind je dit interesant
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

elecad

#9
Goedemiddag,
Ik wil graag, aansluitend op dit item, de volgende vraag stellen:
Hoe kan ik, vanuit een oude tabel met Field-gegevens van de ooit geselecteerde objecten, zien welke objecten dat zijn?
Oftewel: ik wil visueel zien welk object aan welk Field gekoppeld is.
Als ik op de Field-gegevens dubbelklik en edit, zie ik wel de expression maar ik wil weten wat voor soort object er aan gekoppeld is. Ik wil in de tekening zien wélk object dat is. Zoiets als filteren op een blockname, dan verschijnen er Grips van het geselecteerde.
Misschien vindt iemand het leuk en een uitdaging om hier een Lisp-routine voor te schrijven...??

Greetz, Hans Elevelt
EleCAD technisch tekenbureau
Greetzzz Hans Elevelt,
EleCAD technisch tekenbureau

FastFiber