明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2107|回复: 3

尺寸界线修剪

[复制链接]
发表于 2012-11-9 14:09:33 | 显示全部楼层 |阅读模式
下面用的是纯lisp写的“尺寸界线修剪”,有哪位能人可以把它改成简洁的vlisp呢?
  1. ;;;;===Functions developed by Xiaoyu===
  2. ;
  3. ;          尺寸界线修剪 小宇 98.8.5 E-MAIL:CHXY@HOTMAIL.COM
  4. ;
  5. ;命令是dt,就是dimtrim的意思
  6. (defun dfrmvz (p /)
  7.   (if p (list (car p) (cadr p) 0.0))
  8. )
  9. (defun c:dt ( / n ss sn en pt10 pt13 pt14 ptx ptx1 ptx2 pt_1 pt_2 ang1 ang2
  10.                    oexo ose1 ose2)
  11. (if (and (setq pt_1 (getpoint "\n切断线第一点(切线要穿过尺寸线)<退出>: "))
  12.          (setq pt_2 (getpoint pt_1 "\n切断线第二点(切线要穿过尺寸线)<退出>: "))
  13.          (setq n 0 ss (ssget "F" (list pt_1 pt_2)))
  14.     )
  15.     (progn
  16.       (setq oexo (getvar "dimexo"))
  17.       (setq ose1 (getvar "dimse1"))
  18.       (setq ose2 (getvar "dimse2"))
  19.       (setvar "dimexo" 0.0)
  20.       (setvar "dimse1" 0)
  21.       (setvar "dimse2" 0)
  22.       (setq ptx (mapcar '(lambda (x y) (* 0.5 (+ x y))) pt_1 pt_2))
  23.       (while (setq sn (ssname ss n))
  24.         (setq n (1+ n) en (entget sn))
  25.         (if (= "DIMENSION" (cdr (assoc 0 en)))
  26.           (progn
  27.             (setq pt10 (cdr (assoc 10 en)) pt13 (cdr (assoc 13 en))
  28.                   pt14 (cdr (assoc 14 en)) ang1 (angle pt10 pt14)
  29.                   ang2 (+ ang1 (* 0.5 pi)) pt10 (dfrmvz pt10)
  30.                   pt13 (dfrmvz pt13) pt14 (dfrmvz pt14)
  31.                   pt_1 (inters pt13 (polar pt13 ang1 1000.)
  32.                   pt10 (polar pt10 ang2 1000.) nil)
  33.                   ptx (dfrmvz ptx) pt_2 (polar ptx ang2 1000.)
  34.             )
  35.             (if (and (setq ptx1 (inters pt10 pt14 ptx pt_2 nil))
  36.                      (setq ptx2 (inters pt_1 pt13 ptx pt_2 nil)))
  37.                 (progn
  38.                    (setq en (subst (cons 14 ptx1) (assoc 14 en) en)
  39.                          en (subst (cons 13 ptx2) (assoc 13 en) en)
  40.                    )
  41.                    (entmod en)
  42.                 )
  43.             )
  44.           )
  45.         )
  46.       )
  47.       (setvar "dimexo" oexo)
  48.       (setvar "dimse1" ose1)
  49.       (setvar "dimse2" ose2)
  50.     )
  51.   )
  52.   (princ)
  53. )

发表于 2013-2-26 22:52:53 | 显示全部楼层
这个不错,收藏了
发表于 2013-3-1 13:08:56 | 显示全部楼层
好东东。正在找。
发表于 2015-9-2 23:12:14 | 显示全部楼层
很好用,支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 15:31 , Processed in 0.194046 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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