几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(AutoLISP)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-26, 02:34 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 [求助]请教高手,如何做到框选这些标注后就生成下面红色的标注?

[求助]请教高手,如何做到框选这些标注后就生成下面红色的标注?
www.dimcax.com
[求助]请教高手,如何做到框选这些标注后就生成下面红色的标注?如何做到框选这些标注后就生成下面红色的标注?
d
红色的直应是6170吧
(defun bz (/ ss_dim dxf_dim code_13_lst code_14_lst al_point_lst n)
(prompt "\n选择尺寸:")
(setq ss_dim (ssget (list (cons 0 "dimension"))) n 0)
(if ss_dim
(repeat (sslength ss_dim)
(setq dxf_dim (entget (ssname ss_dim n))
code_13_lst (cdr (assoc 13 dxf_dim))
code_14_lst (cdr (assoc 14 dxf_dim))
al_point_lst (append al_point_lst (list code_13_lst) (list code_14_lst))
n (1+ n))
)
)
;只处理水平坐标,垂直坐标把排序改一下
(if al_point_lst (setq al_point_lst (vl-sort al_point_lst (function (lambda (e1 e2) (> (car e1 ) (car e2)))))))
(command "dimlinear" (nth 0 al_point_lst) (last al_point_lst) (getpoint "\n选取尺寸定位点:"))
)
自己再改一下应可以实现你要的效果。。。
d
delin001,那如何判断是垂直还是水平的呢?
d
在晓东上,热心的高手kmdz已经完成得差不多了:
思路:复制选集中的一个标注,提取选集的13,14成表,移除13和14相同的项,得到新标注的两个端点,修改复制的那个标注定义数据。标注位置可以自己指定,也可由程序自行计算位置。
代码defun c:t1 () (defun *error* (msg) (print msg) (print "\n检查标注是否都在一条线上或有重合?") (entdel (entlast)) (setq *error* nil dim-dxf-lst nil ) ) (while (and (not (prompt "\n选择需要累加的标注:")) (setq dim-ss (ssget '((0 . "dimension") (1 . "")))) (> (setq dim-ss-n (sslength dim-ss)) 1) (vl-cmdf "copy" (ssname dim-ss 0) "" '(0 0) '(0 0)) (setq dim-dxf-14 (cdr (assoc 14 (entget (ssname dim-ss 0)))) dim-dxf-10 (cdr (assoc 10 (entget (ssname dim-ss 0)))) dim-dis-1410 (distance dim-dxf-14 dim-dxf-10) dim-ang-1410 (angle dim-dxf-14 dim-dxf-10) dim-dxf-10 (polar dim-dxf-10 dim-ang-1410 (* dim-dis-1410 (1- dim-ss-n)) ) ) ) (if (setq tmp (getpoint "\n指定尺寸标注位置:")) (setq dim-dxf-10 tmp) ) (setq dim-dxf-lst nil) (repeat dim-ss-n (setq dim-dxf-lst (append (list (cdr (assoc 13 (entget (ssname dim-ss (setq dim-ss-n (1- dim-ss-n)))) ) ) (cdr (assoc 14 (entget (ssname dim-ss dim-ss-n)))) ) dim-dxf-lst ) ) ) (foreach m dim-dxf-lst (setq i 0) (foreach n dim-dxf-lst (if (equal m n) (if (> (setq i (1+ i)) 1) (setq dim-dxf-lst (vl-remove m dim-dxf-lst)) ) ) ) ) (setq dim-ent (entget (entlast)) dim-ent (subst (cons 13 (nth 0 dim-dxf-lst)) (assoc 13 dim-ent) dim-ent ) dim-ent (subst (cons 14 (nth 1 dim-dxf-lst)) (assoc 14 dim-ent) dim-ent ) dim-ent (subst (cons 10 dim-dxf-10) (assoc 10 dim-ent) dim-ent) ) (entmod dim-ent) ))但有个问题,标注线是在一条直线上,但首尾标注点不对齐的话,好像就处理不了。
而且,可不可以改成只需要确定偏移的方向,就可以自动在离标注线500的位置进行标注呢?
d
我觉得标注跟图层最好!用change就可以改成什么色都可以
d
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 05:15 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多