yoin

EddyBeerke

Voor onze trouwe lezers: Deze vraag staat ook in de VBA-vragen (Wie weet hoe je in VBA de status van een Xref aanspreekt?)
Hoe spreek je in Lisp de status van een Xref aan?
Ik wil een routine maken waarbij ik een lijst maak v/d Xref's en hun status:
BV:

Naam: Xref1
Path: c:\Map\Xref1.dwg
Status: Loaded

Naam: Xref2
Path: c:\Map\Xref2.dwg
Status: Unloaded

Naam: Xref3
Path: c:\Map\Xref3.dwg
Status: Unreferenced
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

HofCAD

#1
Citaat van: EddyBeerke op ma 16 06 2008, 13:14:05
Voor onze trouwe lezers: Deze vraag staat ook in de VBA-vragen (Wie weet hoe je in VBA de status van een Xref aanspreekt?)
Hoe spreek je in Lisp de status van een Xref aan?
Ik wil een routine maken waarbij ik een lijst maak v/d Xref's en hun status:
BV:

Naam: Xref1
Path: c:\Map\Xref1.dwg
Status: Loaded

Naam: Xref2
Path: c:\Map\Xref2.dwg
Status: Unloaded

Naam: Xref3
Path: c:\Map\Xref3.dwg
Status: Unreferenced

Beste Eddy,

Als eerste aanzet:

(defun c:XrLst( /)
(princ "\nxref name        Status       Type          Path")
(while (setq BLK (tblnext "block" (null BLK)))
  (setq Num70 (cdr(assoc 70 Blk)))
  (if (=(logand Num70 4) 4)
    (progn ;_Xref
      (princ
        (strcat "\n"
          (cdr(assoc 2 Blk))
          "             "
          (if (= (logand 8 Num70) 8) "Overlay" "Insert ")
          "      "
          (if (= (logand 32 Num70) 32) " Load " "Unload")
          "     "
          (cdr(assoc 1 Blk))
          )
        )
      )
    )
  );_while
(textpage)
(princ)
)


Met vriendelijke groet, HofCAD CSI

Ps : Bij Groupcode 70 hoort:

Block-type flags (bit-coded values, may be combined):
0 = Indicates none of the following flags apply
1 = This is an anonymous block generated by hatching, associative dimensioning, other
      internal     operations, or an application
2 = This block has non-constant attribute definitions (this bit is not set if the block has any
       attribute definitions that are constant, or has no attribute definitions at all)
4 = This block is an external reference (xref)
8 = This block is an xref overlay
16 = This block is externally dependent
32 = This is a resolved external reference, or dependent of an external reference
        (ignored on input)
64 = This definition is a referenced external reference (ignored on input)
ACADcadabra

EddyBeerke

Bedankt HofCad,

Hier heb ik veel aan! Nogmaals bedankt.

Ik krijg nu de Xref status of deze geladen is of niet, wat ook de bedoeling is, maar...
Wat ik ook graag wil zien is of deze de status heeft van:

  • "Unreferenced"...: Xref verwijderd
  • "Orphand"       ...: Xref, die unloaded is heeft een andere tekening als Xref (Attach ipv Overlay) in gebruikt
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

HofCAD

Beste Eddy,

Een kleine uitbreiding:

(defun c:XrLst( /)
(princ "\nxref name        Type       Loaded   Unreferenced      Path")
(while (setq BLK (tblnext "block" (null BLK)))
  (setq Num70 (cdr(assoc 70 Blk)))
  (if (=(logand Num70 4) 4)
    (progn ;_Xref
      (princ
        (strcat "\n"
          (cdr(assoc 2 Blk))
          "             "
          (if (= (logand 8 Num70) 8) "Overlay" "Insert ")
          "      "
          (if (= (logand 32 Num70) 32) " Yes " " No ")
          "     "
          (if (ssget "X" (list '(0 . "INSERT") (cons 2 (cdr(assoc 2 Blk)))))
           "No" "yes")

          "     "
          (cdr(assoc 1 Blk))
          )
        )
      )
    )
  );_while
(textpage)
(princ)
)


Test dit eens uit.

Met vriendelijke groet, HofCAD CSI
ACADcadabra

EddyBeerke

Citaat van: HofCAD op do 19 06 2008, 13:32:46

Een kleine uitbreiding:
...
Test dit eens uit.

Met vriendelijke groet, HofCAD CSI

Werkt goed!!!
Helemaal top!
Hier kan ik wel wat mee!


Bedankt HofCAD CSI
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

Ceta

Beste HofCAD en andere forumgebruikers,

Ik heb geprobeerd een xref te wijzigen van overlay naar attach (en vice versa), maar het wil niet lukken.
Aan de hand van de bovenstaande code die jij gemaakt hebt kan ik wel de oospronkelijke toestand uitlezen (overlay of attach),
maar deze vervolgens wijzigen wil nog niet lukken.

Heb jij wellicht de oplossing.

Alvast bedankt, Fred.

HofCAD

#6
Beste Fred,

In de dialoogbox van EXTERNALREFERENCES kun je die bij 'Type' togglen!
Voor een Lisp oplossing van Chris Wade kijk eens naar:
http://www.theswamp.org/index.php?topic=39205.msg444265#msg444265
of
http://lispcad.com/2012/04/autolisp-globally-change-xref-attachment-type/

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Ceta

Beste HofCAD,

Ik heb een poging gedaan het werk van Chris Wade te ontcijferen. Ik kan goed met basis-lisp uit de voeten maar dit gaat mijn pet te boven. Als basis werkt het programma goed. Echter deze wijzigd alle xref's incl. lagen, ltype etc.
Ik ben op zoek naar een lisp die geselecteerde xref's aanpast van overlay naar attach en vice versa en dit zonder de staat van de xref te wijzigen.
Dus in feite hetzelfde als het toggelen in het commando Xref, maar dan zonder het commando te moeten openen en vervolgens xref voor xref dezelfde handelingen te moeten uitvoeren.

Wat er in het kort zou moeten wijzigen in de lisp van Chris Wade:
- Niet naar paperspace schakelen.
- Handmatig xref's selecteren.
- Geen aanpassingen in de lagen van de xref.

Zoals gezegd heb ik geprobeerd het bovenstaande uit te schakelen, maar dat wil mij niet lukken.
Uit je voorgaande bijdragen kan ik opmaken dat jij hier goed mee overweg kan. Zou jij een poging willen doen?

Bij voorbaat dank.
Fred



HofCAD

Beste Fred,

Lijkt dit er al op?

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Ceta

Beste HofCAD,

Mijn dank is groot. Je bent er bijna.

Het selecteren en wijzigen van attach naar overlay en vice versa gaat helemaal goed.
Echter de kleur van de Xref-lagen (deze heb ik in de tekening bijvoorbeeld allemaal op rood gezet) worden weer terugezet naar de oorspronkelijke kleur zoals ze in de xref staan.

groeten, Fred

HofCAD

Beste Fred,

Ik snap dit niet.
Bij mij blijft de overruled kleur bestaan.
Soms moet ik wel een regeneratie geven.

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Ceta

Beste HofCAD,

Je hebt gelijk. Ik heb de lisp nu thuis gebruik en daar blijven de kleuren inderdaad goed staan.
Ik zal maandag op mijn werk kijken wat er daar anders is.

Ik wil je bij deze nogmaals bedanken voor je inzet.
Dit scheelt mij dagelijks een groot aantal handelingen.

Fijn weekend, Fred

FastFiber