CADsite forum

AutoCAD => Autolisp => Topic gestart door: kruid76 op wo 15 03 2017, 12:42:21

Titel: tblsearch alleen in layout (OPGELOST)
Bericht door: kruid76 op wo 15 03 2017, 12:42:21
Goedemiddag,

Ik ben mij aan het verdiepen in lisp en probeer een lisp te maken die print aan de hand van een block name.
een A3 kader heet A3-kader en een A4 kader heet A4-kader.
Aan de hand van de block name kan ik uitlezen wel formaat ik moet printen.
Nu is het geval dat een A4 tekening ge-xrefed word in een A3 tekening.
Zodoende vind ik met tblsearch "block" 2 blokken.
Echter, ik wil alleen het block vinden die in de layout staat.
Hoe doe ik dit?
Titel: Re: tblsearch alleen in layout
Bericht door: roy_043 op wo 15 03 2017, 16:22:59
Misschien dit:
(if
  (and
    (setq ss (ssget "_X" '((2 . "A*-kader"))))
    (= 1 (sslength ss))
  )
  (cdr (assoc 2 (entget (ssname ss 0))))
)
Titel: Re: tblsearch alleen in layout
Bericht door: kruid76 op do 16 03 2017, 09:58:02
Ik Heb nu dit:

(setq Border-block-A3 "A3-kader")
(setq Border_A3 (tblsearch "block" Border-block-A3))
(if Border_A3
   ((lambda (BlockName)(setq Papier-size "A3" ) (setq orientation "Landscape" )
      (if (setq ss1 (ssget "_X" (list '(0 . "INSERT") (cons 2 BlockName))))
         (setq Bordersize (* 1 (setq scale (cdr (assoc 41 (entget (ssname ss1 0)))))))
      )
    )
      Border-block-A3
   )
)


Dit werkt goed, totdat hij in mijn lisp het A4 kader later vind. Dat zet hij alle instellingen voor het A4 formaat.
Nu is dit een hoop jat werk, daar ik niet sterk ben met lisp.

Misschien ben ik op de verkeerde plek voor wat uitleg, maar ik probeer het toch.
Wat doet jou stukje precies?
Je zet met setq SS in het geheugen en daarna zie ik een paar keer SS terug komen..

Titel: Re: tblsearch alleen in layout
Bericht door: EddyBeerke op do 16 03 2017, 10:58:04
Kijk eens hier:
http://www.cadsite.be/smf/index.php?topic=3954.msg20514#msg20514

Als je de routine aanpast kun je bv maken dat per layout alle objecten geselecteerd worden zoals je doet in acad... "Select" "all" i.p.v. (ssget "_X"...
Voorwaarde is dat je natuurlijk maar 1 kader in je layout hebt
Titel: Re: tblsearch alleen in layout
Bericht door: roy_043 op do 16 03 2017, 13:23:19
@kruid76:
Je kunt zeker uitleg vragen. Maar vergeet niet om ook de gekende bronnen (bijv. deze (http://docs.autodesk.com/ACD/2011/ENU/filesALR/WSfacf1429558a55de1a7524c1004e616f8b-5913.htm) en deze (http://www.afralisp.net/index.php)) te bestuderen.

(if
  (and
    (setq ss (ssget "_X" '((2 . "A*-kader")))) ; Selectie set van alle "A*-kader" inserts in de tekening.
    (= 1 (sslength ss))                        ; Controleer of de set maar 1 element bevat.
  )
  (progn
    (setq elst (entget (ssname ss 0)))         ; Entitylijst van de insert.
    (setq name (cdr (assoc 2 elst)))           ; Blocknaam.
    (setq scale (cdr (assoc 41 elst)))         ; X-schaal.
    (cond
      ((= "A4-KADER" (strcase name))
        (setq papier-size "A4")
        (setq orientation "Portrait")
      )
      ((= "A3-KADER" (strcase name))
        (setq papier-size "A3" )
        (setq orientation "Landscape")
      )
    )
  )
)
Titel: Re: tblsearch alleen in layout
Bericht door: kruid76 op do 16 03 2017, 14:48:23
Bedankt voor de uitleg. Mocht ik weer wat ruimer in de tijd zitten, dan zal ik proberen dit erin te zetten.