CADsite forum

AutoCAD => Autolisp => Topic gestart door: Anonymous op wo 27 10 2004, 15:53:04

Titel: arc wijzigen
Bericht door: Anonymous op wo 27 10 2004, 15:53:04
is er een commando om een arc in meerdere stukjes rechte lijn te wijzigen?
net zo als een polygon ipv een cirkel?
(wij hebben een programma wat acad-blocks gebruikt, maar geen boogjes kan lezen, nu moet ik honderden arcs veranderen)

groeten,Martin
Titel: Re: arc wijzigen
Bericht door: HofCAD op ma 29 11 2004, 16:19:21
Citaat van: Anonymousis er een commando om een arc in meerdere stukjes rechte lijn te wijzigen?
net zo als een polygon ipv een cirkel?
(wij hebben een programma wat acad-blocks gebruikt, maar geen boogjes kan lezen, nu moet ik honderden arcs veranderen)

groeten,Martin

Beste Martin,

Hopelijk is onderstaande LISP-file wat je zoekt.
Het is door mij niet grondig gecontroleerd.

Groetjes HofCAD


(defun C:arclin(/ ss1 ~cmd ~pkadd n ent dataent r pm startAng endAng totAng dAng i)
 (setq   ss1    nil
   ~cmd   (getvar "CMDECHO")
   ~pkadd (getvar "PICKADD")
 )
 (setvar "CMDECHO" 0)
 (initget 6)
 (setq n (getint "Aantal lijnstukken ter vervanging van de boog?"))
 (setvar "PICKADD" 0)
 (print "Selecteer een boog en geef een <Enter>")
 (setq ss1 (ssget '((0 . "ARC"))))
 (if (/= ss1 nil)
   (progn (setq ent (ssname ss1 0))
      (setq dataent (entget ent))
      (setq pm (cdr (assoc '10 dataent))
       r  (cdr (assoc '40 dataent))
      )
      (setq startAng (cdr (assoc '50 dataent)))
      (setq endAng (cdr (assoc '51 dataent)))
      (if (< startAng endAng)
        (setq totAng (- endAng startAng))
        (setq totAng (+ (- (* 2 pi) startAng) endAng))
      )
      (setq dang (/ totAng (float n))
       i    0
      )
      (command "LINE" (polar pm startAng r))
      (repeat n
        (setq i (1+ i))
        (command (polar pm (+ startAng (* i dang)) r))
      )
      (command "")
   )
 )
 (setq ss1 nil)
 (setvar "PICKADD" ~pkadd)
 (setvar "CMDECHO" ~cmd)
)