明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 854|回复: 0

以下源码把SPL线转换成圆弧,怎么合并一起?

[复制链接]
发表于 2019-10-15 22:36 | 显示全部楼层 |阅读模式
本帖最后由 qianyi0710 于 2019-10-15 22:44 编辑

(defun C:qa(/        HOLDECHO    OS          SSS        NUMPT N
                          ED        ED1   PTST  PTEND SS2        PT1   PT2
                          PT3        J     ENT   NNO          SS        SSL
                         )

  (defun VAL1 (N SS INDEX)
    (cdr (assoc N (entget (ssname SS INDEX))))
  )

  (defun CH_IT (NOS)
    (if        (assoc NOS ED)
      (progn
        (if (assoc NOS ENT)
          (setq ENT (subst (assoc NOS ED) (assoc NOS ENT) ENT))
          (setq ENT (append ENT (list (assoc NOS ED))))
        )
        (entmod ENT)
      )
    )
  )

  (setq HOLDECHO (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command "_.undo" "group")
  (setq OS (getvar "osmode"))
  (setvar "osmode" 0)
  (prompt "\nPlease pick the spline: ")
  (setq SSS (ssget '((0 . "spline"))))
  (if SSS
    (progn
      (initget (+ 1 2 4))
      (setq NUMPT
             (getint
               "\nPlease specify the accuracy of conversion: "
             )
      )
      (setq N 0)
      (setq SSL (sslength SSS))
      (repeat SSL
        (prompt (strcat "\r余 " (itoa (- SSL N)) " 个物件     "))
        (setq ED1 (ssname SSS N))
        (setq ED (entget ED1))
        (setq PTST  (cdr (assoc 10 ED))
              PTEND (cdr (assoc 10 (reverse ED)))
        )
        (command "_.divide" ED1 (* 2 NUMPT))
        (setq SS2 (ssget "p"))
        (if (= (logand (cdr (assoc 70 ED)) 1) 1)
          (setq J 1)
          (setq J 0)
        )
        (setq PT3 PTST)
        (setq SS (ssadd))
        (repeat        NUMPT
          (setq PT2 (VAL1 10 SS2 J))
          (if (/= NUMPT (/ (+ J 2) 2))
            (setq PT1 (VAL1 10 SS2 (+ 1 J)))
            (setq PT1 PTEND)
          )
          (command "_.arc" PT3 PT2 PT1)
          (ssadd (entlast) SS)
          (setq PT3 PT1)
          (setq J (+ 2 J))
        )
        (command "_.pedit" (ssname SS 1) "" "j" SS "" "")
        (setq ENT (entget (entlast)))
        (foreach NNO '(6 8 62 48)
          (CH_IT NNO)
        )
        (command "_.erase" SS2 ED1 "")
        (setq N (1+ N))
      )
      (prompt (strcat "\r完成转换                               ")
      )
    )
    (alert "Nothing selected!!")
  )
  (setvar "osmode" OS)
  (command "_.undo" "end")
  (setvar "cmdecho" HOLDECHO)
  (princ)
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 08:37 , Processed in 0.234004 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表