乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 158|回复: 9

[分享]尺寸合并,分解

[复制链接]

43

主题

152

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
324
发表于 2004-5-10 14:40:00 | 显示全部楼层 |阅读模式
提供一个尺寸合并、分解的源程序,请各位指点意见……
在使用中会出现问题吗?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;尺寸合并 2004年4月;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:ccb ()
(setvar "cmdecho" 0)
(command "_.undo" "be")
(princ "\n尺寸合并>.请选择要合并的尺寸:")
(setq ss1 (ssget ":s" '((0 . "DIMENSION"))))
(setq nam1 (ssname ss1 0)
                                         ent1 (entget nam1)
                                         pdim1_13 (cdr (assoc 13 ent1))
                                         pdim1_14 (cdr (assoc 14 ent1)))
(setq ss2 (ssget ":s" '((0 . "DIMENSION"))))
(setq nam2 (ssname ss2 0)
                                         ent2 (entget nam2)
                                         pdim2_13 (cdr (assoc 13 ent2))
                                         pdim2_14 (cdr (assoc 14 ent2)))
(vl-load-com)
(setq bb (list pdim1_13 pdim1_14 pdim2_13 pdim2_14))
(setq bb1
                         (vl-sort bb
                                                                                                 (function (lambda (e1 e2)
                                                                                                                                                                                                 (>.\n请选择要分解的尺寸:")
(setq ss1 (ssget ":s" '((0 . "DIMENSION"))))
(setq point (getpoint "\n请点取分解点位置:"))
(setq nam1 (ssname ss1 0)
                                         ent1 (entget nam1)
                                         pdim1_13 (cdr (assoc 13 ent1))
                                         pdim1_14 (cdr (assoc 14 ent1)))
(command "copy" ss1 "")
(setq ss2 (entlast))
(setq ent2 (entget ss2)
                                         pdim2_13 (cdr (assoc 13 ent2))
                                         pdim2_14 (cdr (assoc 14 ent2)))
(setq bb (list pdim1_13 pdim1_14))
(setq bb1
                         (vl-sort bb
                                                                                                 (function (lambda (e1 e2)
                                                                                                                                                                                                 ( (angle point (nth 0 bbb)) (angle (nth 1 bbb) (nth 0 bbb)))
                 (setq cankaodian (polar point (+ (angle (nth 0 bbb) (nth 1 bbb)) (* pi 1.5)) 90000)))
                 ((" point "@0,0[/hide]
回复

使用道具 举报

4

主题

34

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2004-5-20 14:44:00 | 显示全部楼层
这个功能在天正里的尺寸工具栏里有了。
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-5-20 20:09:00 | 显示全部楼层
ccb好些,但也有不听话的时候
ccf错误多些,经常有
错误: DXF 组不正确: (14)
错误: DXF 组不正确: (13)
非wcs下,ccf几乎不能用,ccd有的合并后没有删除原标注
回复

使用道具 举报

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-5-20 22:05:00 | 显示全部楼层
;=====================================
; 水平尺寸线分割标注
;=====================================
(defun c:fg( /)
         (print "请选择要分割的尺寸线:")
         (setq ss (ssget ]         (command "point"                 (cdr (assoc 13 (entget (ssname         ss 0 ))))         )
         (setq ss1 (ssadd         (entlast) ss1         ))
         (command "point"         (cdr (assoc 14 (entget (ssname         ss 0 ))))         )
         (setq ss1 (ssadd         (entlast) ss1))
         (command         "point"         (getpoint "请选择分割点:"         )         )
         (setq ss1         (ssadd         (entlast) ss1) )
         (setq os (getvar "osmode") )
         (command "qdim" ss1         ""         (cdr (assoc 10 (entget (ssname         ss 0 )))) )
         (command "erase" ss1 "" ) (command "erase" ss "" )
         (setvar "osmode" os)
)
回复

使用道具 举报

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-5-20 22:09:00 | 显示全部楼层
以上程序需要修改,麻烦帮我看一下。
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-5-21 00:59:00 | 显示全部楼层
ljcgq[/url],照片里面是你还是你老婆孩子?
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-5-21 02:49:00 | 显示全部楼层
不过,对倾斜的标注,这个算法还是有问题的
(defun c:fg( /)
         (print "请选择要分割的尺寸线:")
         (setq ss (ssget ":s" '(( 0 . "DIMENSION" )) )
                                         ss1 (ssadd));!!!!!
         (command "point"                 (cdr (assoc 13 (entget (ssname         ss 0 ))))         )
         (setq ss1 (ssadd         (entlast) ss1         ))
         (command "point"         (cdr (assoc 14 (entget (ssname         ss 0 ))))         )
         (setq ss1 (ssadd         (entlast) ss1))
         (command         "point"         (getpoint "请选择分割点:"         )         )
         (setq ss1         (ssadd         (entlast) ss1) )
         (setq os (getvar "osmode") )
         (command "qdim" ss1         ""         (cdr (assoc 10 (entget (ssname         ss 0 )))) )
         (command "erase" ss1 "" ) (command "erase" ss "" )
         (setvar "osmode" os)
)
回复

使用道具 举报

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-5-21 11:12:00 | 显示全部楼层
是的,我只是有一个思路,哈哈写了个,没时间在扩展,也许加入ucs转变可以达到斜尺寸的分割,,,大家完善吧。。先谢谢了。。
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-5-21 13:46:00 | 显示全部楼层
哈哈?嘉兴哈哈?
回复

使用道具 举报

43

主题

152

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
324
发表于 2004-5-21 14:23:00 | 显示全部楼层
我也有时遇到这样的问题,但代码没什么错啊,我本来想加个限制的,只能合并同一直线上的尺寸,可是加了不能用。有些怪,可能程序本身有些不完全吧
不过我那个对于倾斜的尺寸可以用。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-17 08:09 , Processed in 2.793401 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表