FastFiber

arc wijzigen

Gestart door Anonymous, wo 27 10 2004, 15:53:04

Vorige topic - Volgende topic

Anonymous

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

HofCAD

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)
)
ACADcadabra