明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: alwaysbin

将多个多义线绕中点旋转90度的问题

  [复制链接]
发表于 2004-8-11 11:48:00 | 显示全部楼层
呵呵,你是来这里寻求程序的吧
兄弟,要学着自己写才会进步的
下面的程序试试看行不,如果你的图层有区分在选取时就可以加上筛选那样子直接框选就 OK 了,现在的得自己一个一个选择 (defun c:aa (/ ss n en ed n@ point-list p1_x p2_x p1-x p1_y p2_y p2-y p1)
(setq ss (ssget)) ;选择图元
(setq n 0)
(while (> (sslength ss) n) ;循环选择的图元
(setq en (ssname ss n))
(setq ed (entget en)) ;图元数据
(setq n@ 0)
(setq point-list nil)
(while (/= (nth n@ ed) nil)
(if (= (car (nth n@ ed)) 10)
(setq point-list (append (list (cdr (nth n@ ed))) point-list))
)
(setq n@ (1+ n@))
)
(setq p1_x (car (car point-list))) ;第一点 X 轴
(setq p2_x (car (cadr point-list))) ;第二点 X 轴
(if (and (/= p1_x nil)
(/= p2_x nil)
)
(setq p1-x (+ p1_x (/ (- p2_x p1_x) 2.0000))) ;X 中心点
)
(setq p1_y (cadr (car point-list))) ;第一点 Y 轴
(setq p2_y (cadr (cadr point-list))) ;第二点 Y 轴
(if (and (/= p1_y nil)
(/= p2_y nil)
)
(setq p1-y (+ p1_y (/ (- p2_y p1_y) 2.0000))) ;Y 中心点
)
(setq p1 (list p1-x p1-y)) ;中心点
(command "_.ROTATE" en "" P1 90)
(setq n (1+ n))
)
(princ)
)
 楼主| 发表于 2004-8-11 12:21:00 | 显示全部楼层
不行啊,现在的问题是,框选以后,除了尺寸断线以外的东西都旋转了90度,就是尺寸断线没有旋转,请问是为什么?



如果是一个一个的选,还是太麻烦了。还不如想别的办法。


我觉得既然可以做到这样,那么就按道理就可以反过来,把刚才选择的全部不选,没选的全部选起。


先谢过。
发表于 2004-8-11 12:33:00 | 显示全部楼层
现在的程序本来就是一个一个选的啊




         
如果是框选,也不会除了尺寸断线以外的东西都旋转了90度,就是尺寸断线没有旋转啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2004-8-11 12:53:00 | 显示全部楼层
看看我的困惑吧,出来尺寸断线全变了。


       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-8-11 13:01:00 | 显示全部楼层
alwaysbin发表于2004-8-10 21:42:00如果这样的话,可不可以这样,我在选择时不全部框选,只逐个选择我的尺寸线,即选择的所有LWPOLYLINE都是要旋转的,这样可以实现吗? 请给个提示?
晕倒,框选是这样的啊,现在的程序没有筛选的功能,因为你的图层都没有区分所以筛选起来比较麻烦点,你看我的演示是一个一个选啊.
 楼主| 发表于 2004-8-11 13:48:00 | 显示全部楼层
哈哈,老兄好幽默。


我的意思是,既然是歪打正着的可以达到相反的效果,你看能不能把选择集改一下,达到我想要的效果。一个一个的点真的很麻烦也。
发表于 2004-8-11 15:55:00 | 显示全部楼层
试一下更改过的程序: (defun c:aa (/ SS N EN ED P1 P2 I PM)
(setq ss (ssget "X" (LIST (CONS 8 "尺寸线及标注符号") (CONS 0 "LWPOLYLINE"))))
(setq n 0)
(while (> (sslength ss) n) ;循环选择的图元
(setq en (ssname ss n))
(setq ed (entget en)) ;图元数据
(IF (NOT (ASSOC 62 ED)) (PROGN
(SETQ P1 (CDR (ASSOC 10 ED)) I 0)
(WHILE (/= (CAR (NTH I ED)) 10) (SETQ I (1+ I)))
(SETQ P2 (CDR (NTH (+ I 4) ED))
PM (POLAR P1 (ANGLE P1 P2) (* (DISTANCE P1 P2) 0.5)))
(COMMAND "ROTATE" EN "" PM "90")
))
(setq n (1+ n))
)
(SETQ SS (SSGET "X" (LIST (CONS 8 "尺寸线及标注符号") (CONS 0 "TEXT"))))
(SETQ N 0)
(while (> (sslength ss) n)
(SETQ EN (SSNAME SS N))
(SETQ ED (ENTGET EN))
(SETQ N (1+ N))
(SETQ P1 (CDR (ASSOC 50 ED)))
(IF (EQUAL P1 (/ PI 2) 1E-5) (PROGN
)
(SSDEL EN SS)
)
)
(SETQ P2 (CDR (ASSOC 40 ED)) P2 (* P2 1.36)
PM (STRCAT "@-" (RTOS P2 2 3) ",0"))
(COMMAND "MOVE" SS "" "0,0" PM)
(princ)
)
发表于 2004-8-11 18:22:00 | 显示全部楼层
呵呵,比我的好多了
 楼主| 发表于 2004-8-11 18:25:00 | 显示全部楼层
????,大哥,不知道你自己运行过你的程序没有,我根本用不了。


可以加载,但一输入命令就出错,看了半天也没有看出哪里不对。
发表于 2004-8-11 19:20:00 | 显示全部楼层
出什么错了,我这里运行 ZZXXQQ 的程序没有问题啊,可以达到你的要求.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 21:44 , Processed in 0.181347 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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