明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 556|回复: 7

[源码] 圆转PL线, SPL转PL?

[复制链接]
发表于 2024-8-26 02:20:37 | 显示全部楼层 |阅读模式
本帖最后由 zilong136 于 2024-8-27 00:26 编辑

求一份圆、圆弧转PL线的lisp?
                          SPL转PL?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-26 11:37:12 | 显示全部楼层
  1. (defun c:tt ()
  2.   "圆、圆弧转PL线"
  3.   (if (setq ss (ssget '((0 . "arc,circle")))
  4.             i  -1
  5.       )
  6.     (while (setq s1 (ssname ss (setq i (1+ i))))
  7.       (setq a (entget s1))
  8.       (if (= (cdr (assoc 0 a)) "ARC")
  9.         (vl-cmdf "pedit" s1 "")
  10.         (progn
  11.           (setq p0 (cdr (assoc 10 a))
  12.                 rr (* (cdr (assoc 40 a)) 2)
  13.           )
  14.           (command "donut" rr rr "non" p0 "")
  15.           (entdel s1)
  16.         )
  17.       )
  18.     )
  19.   )
  20.   (princ)
  21. )
回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-26 09:46:52 | 显示全部楼层
胡乱写了一个,试试
  1. (defun c:tt  (/ en lst n old ss)
  2. (setq lst (list "cmdecho" "peditaccept" "plinewid")
  3.        old (mapcar 'getvar lst))
  4. (mapcar 'setvar lst '(0 1 0))
  5. (setq ss (ssget '((0 . "arc,circle"))))
  6. (repeat (setq n (sslength ss))
  7.   (setq en (ssname ss (setq n (1- n))))
  8.   (if (= "ARC" (cdr (assoc 0 (entget en))))
  9.    (vl-cmdf "pedit" en "")
  10.    (progn (vl-cmdf "pline"
  11.                    "non"
  12.                    (vlax-curve-getstartpoint en)
  13.                    "a"
  14.                    "s"
  15.                    "non"
  16.                    (vlax-curve-getpointatparam en (* 0.5 pi))
  17.                    "non"
  18.                    (vlax-curve-getpointatparam en pi)
  19.                    "cl")
  20.           (entdel en))))
  21. (mapcar 'setvar lst old)
  22. (princ))
回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-26 03:00:12 | 显示全部楼层
  • ;圆、弧转2节点多段线-----(一级)------
  • (defun arccirtopl (e / en p r ang1 ang2)
  •   (defun arc-cir-topl (p r ang1 ang2 / a)
  •     (setq a (* (rem (+ (- ang2 ang1) 2pi) 2pi) 0.25) a (cons 42 (/ (sin a) (cos a))))
  •     (list (cons 10 (polar p ang1 r)) a (cons 10 (polar p ang2 r)) a)
  •   )
  •   ;;---------
  •   (setq
  •     en (entget e)
  •     p (cdr (assoc 10 en))
  •     r (cdr (assoc 40 en))
  •     ang1 (cdr (assoc 50 en))
  •   )
  •   (entdel e)
  •   (entmakex
  •     (vl-remove 'nil
  •       (append
  •         (mapcar 'cons '(0 100 100 90 70) (list "LWPOLYLINE" "AcDbEntity" "AcDbPolyline" 2 (if ang1 0 1)))
  •         (list (assoc 8 en) (assoc 370 en) (assoc 62 en))
  •         (if ang1 (arc-cir-topl p r ang1 (cdr (assoc 51 en))) (arc-cir-topl p r 0 pi))
  •       )
  •     )
  •   )
  • )

 楼主| 发表于 2024-8-27 00:24:46 | 显示全部楼层
夏生生 发表于 2024-8-26 09:46
胡乱写了一个,试试

谢谢,可以用,能不能再写个SPL转PL?
 楼主| 发表于 2024-8-27 00:28:26 | 显示全部楼层

谢谢,可以用,能不能再写个SPL转PL?
发表于 2024-8-27 08:42:41 | 显示全部楼层
zilong136 发表于 2024-8-27 00:28
谢谢,可以用,能不能再写个SPL转PL?

acad现成的splinedit
 楼主| 发表于 2024-8-27 13:37:37 | 显示全部楼层

OK,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:33 , Processed in 0.225502 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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