[ahwx0814]雨中漫 14:57:38
[qqimg]oldimg/{A01FB6D2-006F-15E5-FAA7-D5E70EE65860}.jpg[/qqimg][qqimg]oldimg/{0648F852-D77E-54A4-ED7F-CE781AB1F947}.jpg[/qqimg]
程序搞定
[mmh1][mmh1]漫步地球 14:58:07
我只是举个例子而已,平时的图很多东西的
[mmh1][mmh1]漫步地球 14:59:28
我也还差一点点
[kwok][kwok]巭隼 15:01:24
结合ALIGN取得最近点和最近端点自动转成也可以吧
[alwtyp][alwtyp] 15:03:44
用ROTOTE结合参照也一样
[mmh1][mmh1]漫步地球 15:05:00
参照没有点
[alwtyp][alwtyp] 15:05:31
参照也要有点
[mmh1][mmh1]漫步地球 15:05:59
问题是我选的是线,不选点
[ahwx0814]雨中漫 15:07:38
计算最长边,然后最长边放平
[mmh1][mmh1]漫步地球 15:08:02
(DEFUN C:Y2()
(setq en (entsel))
(setq ena (vlax-ename->vla-object(car en)))
(setq p0 (vlax-curve-getClosestPointTo ena (car en)))
(setq a (vlax-curve-getParamAtPoint ena p0))
(setq a1 (+ (fix a) 1))
(setq p1 (vlax-curve-getPointAtParam ena a1))
(setq j (angle p0 p1))
)
奇怪:
错误: 参数类型错误: 二维/三维点:
[alwtyp][alwtyp] 15:08:36
我是说你如果不是有很多这样的东西要处理,只要ROTOTE就可以,如果多,要需要单独编个程序
[mmh1][mmh1]漫步地球 15:09:13
不多,一次就几百个
[仲文玉][仲文玉]wygjx 15:09:25
[ahwx0814]雨中漫 15:09:28
你发吧图发个给我
[vormittag]桔子 15:11:55
(cdr en)
(cadr en)
[阿然][阿然] 15:12:25
用command rotate不行?
[vormittag]桔子 15:13:16
数量多就很慢了。
[mmh1][mmh1]漫步地球 15:13:56
line线的话一直在用,就是有个同事问LWPOLYLINE线能不能不打散然后沿着这条线摆正
[mmh1][mmh1]漫步地球 15:14:46
选的经常是矩形之类的一边
[mmh1][mmh1]漫步地球 15:15:37
[qqimg]oldimg/{C70FFCEF-9905-3907-184A-AD66F287B2E3}.jpg[/qqimg]
比如这样的,最下面就是个LWPOLYLINE线画的矩形
[ahwx0814]雨中漫 15:16:01
这个也简单
[mmh1][mmh1]漫步地球 15:17:16
本来想先选中,然后打散矩形然后得到角度,再合并回去。放入选集中,再旋转
[vormittag]桔子 15:17:18
这些东西都是变换。
[vormittag]桔子 15:19:15
[qqimg]oldimg/{45E9FB5A-17BC-E715-0C8C-D817A53299D0}.jpg[/qqimg]
搞明白一些变换以后,这种都非常简单。
[yarp]潜水 15:19:48
桔子,cad没有提供这种变换吧?
[ahwx0814]雨中漫 15:20:06
这个不是变换,只是旋转
[阿然][阿然] 15:20:14
等比变化都有
不等比的没有
[vormittag]桔子 15:20:55
这些都是用点连成的线,只要对各点进行矩阵变换就可以了。
[阿然][阿然] 15:20:57
vla-TransformBy
[vormittag]桔子 15:21:04
然后重新生成。
[vormittag]桔子 15:21:44
vla-TransformBy 的变换很有限。
[vormittag]桔子 15:22:38
它所能应用的变换矩阵是有条件的。
不等比的变换和错切变换就不行。
[vormittag]桔子 15:24:41
旋转也是一种变换。
[yarp]潜水 15:26:54
哦。
[mmh1][mmh1]漫步地球 15:32:22
(DEFUN C:Y2()
(setq ss (ssget))
(setq en (entsel))
(setq ena (vlax-ename->vla-object(car en)))
(setq p0 (vlax-curve-getClosestPointTo ena (cadr en)))
(setq a (vlax-curve-getParamAtPoint ena p0))
(setq a1 (+ (fix a) 1))
(setq p1 (vlax-curve-getPointAtParam ena a1))
(command "rotate" ss "" p0 "r" p0 p1 0)
(princ)
)
大师果然犀利啊,一句话就解决了! |