Hoofdmenu

Divide by linetype

Gestart door acad2012, zo 24 11 2013, 19:27:04

Vorige topic - Volgende topic

acad2012

Goede dag,
De bedoeling is om een bepaalde linetype polyline of line om te vervangen door losse blokjes mbv van een lisp routine.
Er is bijvoorbeeld een line of polyline met linetype "hidden" en die wil ik verdelen met een gelijkmatige verdeling met vierkantjes van 1 bij 1 mm (blockname in de tekening markering, tussenmaat van 7.5mm). Dus alleen de lijnen met type "hidden" en alle andere lijnsoorten niet.
Na de verdeling moet de originele lijn verplaatst worden naar een andere laag zodat deze niet meer zichtbaar wordt.
Wie kan mij hier mee helpen?

HofCAD

#1
Beste Acad2012,

Kijk eens in de bijlage!

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

acad2012

Geweldig, hartelijk bedankt voor de lisp routine.
Ga dit gelijk onderzoeken hoe het werkt. weer iets om te bestuderen.

EddyBeerke

HofCAD,

Kun je ook de functie RN mee sturen ik krijg de melding dat ie gemist wordt.
Deze wordt aangeroepen vanuit @recblk.
Alvast bedankt.
Civil3d 2022, Blender 3.4 gebruiker
Gebruiker sinds AutoCAD R12

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

HofCAD

#4
Beste Eddy,

De functie rn is niet nodig, en daarom heb ik hem er uit gehaald.
Deze functie zette een prefix voor de laagnaam.

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

acad2012

Hoi Hofcad,
Nogmaal super bedankt voor je Lisp. Alleen probeer ik er iets van te leren en loop een beetje door de code heen en als ik goed heb maak je dan een block aan als die er niet is?
(if (not (tblsearch "BLOCK" "Markering"))
    (progn
      (entmake (list '(0 . "BLOCK")
           (cons 2 Lay2)
           '(70 . 64)
           '(10 1.5 1.5 0.0)
          )
      )
      (@recblk '(1 1 0) '(2 2 0) Lay2)
      (entmake '((0 . "ENDBLK")))

Of heb ik het helemaal mis? Zou wel mooi zijn dat als het block er niet is er een aangemaakt wordt.

Mvgr
Henk

HofCAD

#6
Citaat van: acad2012 op di 26 11 2013, 17:20:01
Hoi Hofcad,
Nogmaal super bedankt voor je Lisp. Alleen probeer ik er iets van te leren en loop een beetje door de code heen en als ik goed heb maak je dan een block aan als die er niet is?
(if (not (tblsearch "BLOCK" "Markering"))
    (progn
      (entmake (list '(0 . "BLOCK")
           (cons 2 "Markering")
           '(70 . 64)
           '(10 1.5 1.5 0.0)
          )
      )
      (@recblk '(1 1 0) '(2 2 0) Lay2)
      (entmake '((0 . "ENDBLK")))

Of heb ik het helemaal mis? Zou wel mooi zijn dat als het block er niet is er een aangemaakt wordt.

Mvgr
Henk
Beste Henk,

Dat klopt!
Als er geen block "Markering" is, dan wordt via @recblk een vierkant aangemaakt op de laag Lay2 ("Markering")
wat in de blockdefinitie BlkName "Markering" wordt geplaatst.
Als je liever het vierkant in de blockdefinitie op de laag "0"" wilt hebben,
dan verander (@recblk '(1 1 0) '(2 2 0) Lay2) in (@recblk '(1 1 0) '(2 2 0) "0").
Verder ben ik in de Lisp ervan uit gegaan, dat de bedoelde lijnen en polylijnen het lijntype
niet ByLayer staat maar op HIDDEN en dat je een automatische selectie wil toepassen.

Met vriendelijke groet, HofCAD CSI.

PS In bovenstaande bijlage van 2BLKs.lsp heb ik kleine veranderingen gemaakt.
ACADcadabra