明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1787|回复: 4

走马观花:双向延伸、剪切

[复制链接]
发表于 2021-7-15 08:10:37 | 显示全部楼层 |阅读模式
有个好思路,代码才效率高,怎么写倒不是个事。
  • ;;伸剪-----------------
  • (defun c:slls (/ ss n fz1 xn en_dat en_type en_qd en_zd fz2 jd oldr newr dis)
  •   (princ "选择直线或一段的多线")
  •   (while (setq ss (ssget ":S"))
  •     (redraw)
  •     (setq fz1 (getpoint "请选择延伸、剪切定位点"))
  •     (setq dis (* 100 (/ (getvar "viewsize") (cadr (getvar "screensize")))))
  •     (repeat (setq n (sslength ss))
  •       (setq xn (ssname ss (setq n (1- n))))
  •       (setq en_dat (entget xn))
  •       (setq en_type (dxf1 en_dat 0))
  •       (setq en_qd (vlax-curve-getstartpoint xn))
  •       (setq en_zd (vlax-curve-getendpoint xn))
  •       (setq fz2 (polar fz1 (+ (angle en_qd en_zd) pi2) dis))
  •       (setq jd (inters en_qd en_zd fz1 fz2 nil))
  •       (if (= en_type "LINE")
  •         (if (> (distance en_qd jd) (distance en_zd jd))
  •           (entmod (emod en_dat 11 jd))
  •           (entmod (emod en_dat 10 jd))
  •         )
  •       )
  •       (if (= en_type "LWPOLYLINE")
  •         (if (> (distance en_qd jd) (distance en_zd jd))
  •           (progn
  •             (setq oldr (assoc 10 (reverse en_dat)))
  •             (setq newr (cons 10 jd))
  •             (setq en_dat (subst newr oldr en_dat))
  •             (entmod en_dat)
  •           )
  •           (entmod (emod en_dat 10 jd))
  •         )
  •       )
  •       (if (= n 0)
  •         (grdraw fz1 fz2 3 2)
  •       )
  •     )
  •   )
  • )

发表于 2021-7-16 21:12:37 | 显示全部楼层
cghdy 发表于 2021-7-16 09:13
缺几个函数,试不出来。能录个gif也好。

(defun dxf1 (lst dxf)
  (cdr (assoc dxf lst))
)
(defun emod(dxf i value / a b)
   (setq b(cons i value))
   (if(setq a(assoc i dxf))(subst(cons i value)a dxf)(append dxf(list(cons i value)))))
回复 支持 1 反对 1

使用道具 举报

发表于 2021-7-16 09:13:57 | 显示全部楼层
缺几个函数,试不出来。能录个gif也好。
 楼主| 发表于 2021-7-17 02:51:41 | 显示全部楼层
cghdy 发表于 2021-7-16 09:13
缺几个函数,试不出来。能录个gif也好。

;;;常量定义
(setq *Acad* (vlax-get-acad-object)
        *AcDocument* (vla-get-activedocument *Acad*)  ; 获取当前图档指针
        *Model-Space* (vla-get-modelspace *AcDocument*)
        *Paper-Space* (vla-get-PaperSpace *AcDocument*)
        pi2           (* pi 0.5)
        pi4           (* pi 0.25)
        3pi4         (* 0.75 pi)
        2pi           (+ pi pi)
        3pi2         (+ 3pi4 3pi4)  ;; (* 1.5 pi)
        5pi4   (+ pi pi4)  ;;(* 1.25 pi)
        7pi4   (+ 3pi2 pi4) ;;(* 1.75 pi)
)
发表于 2021-11-23 11:30:43 | 显示全部楼层
这个好 这个好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:15 , Processed in 0.150553 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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