旋转过的图块插入点如何求得?
[求助]各位高手有关于图块插入点如何取得?本人已用3D建立钢梁(附图中,H1标示)及铁板(附图中,P字开头标示),
并转成俯视图及正视图,欲做批量尺寸标示,
但经多次试着以LISP抓取座标,数值皆不正确,请教高手可有好的解决办法.
楼主头痛的问题是不是使用NENTSEL 得到的图元参数,没法提出正确的坐标参数。
块本身因为旋转造成座标值不正确
(即当使用指令 ID 测得座标值
,与用LISP点选图块所得到的座标值不同) (trans block'dxf10 block-ent 1) 2D块我有处理过,用NENTSEL 和 转换矩阵 可以获得正确的坐标点。
3D的就没处理过了,我昨天试了试你图里(P字开头)的坐标我都提不出来。3D的没接触过
指令: (setq qq (cdr (assoc 10 (entget (car (entsel))))))
选取物件: (-25332.5 155.5 9242.89)
指令: _-view 输入选项 [列示(?)/删除(D)/正投影(O)/还原(R)/储存(S)/设定(E)/视窗(W)]: _swiso 正在重生模型。
指令: ID
指定点: _m2p 中点的第一点: 中点的第二点:X = 9242.89 Y = -25332.46 Z = 155.50 感謝 masterlong 回覆
不過,不了解你的意思
(trans block'dxf10 block-ent 1)??? 本帖最后由 yoyoho 于 2011-5-10 08:47 编辑
感谢 198526 回覆
图里(P字开头)的坐标可以提出但X,Y,Z值是错位的
LISP==>(-25337.5 155.5 9807.67)
指令: ID==>(9807.67-25337.46 155.50)
指令: (setq qq (cdr (assoc 10 (entget (car (entsel))))))
选取物件: (-25337.5 155.5 9807.67)
指令:
指令: *取消*
指令: ID
指定点:X = 9807.67 Y = -25337.46 Z = 155.50
(if (> 3 (length tq))
(SETQ tt (trans pt10 0 1)) ;非块内对象
(SETQ XX (+
(* (CAR PT10) (CAR (NTH 0 (NTH 2 TQ))))
(* (CADR PT10) (CAR (NTH 1 (NTH 2 TQ))))
(* (CADDR PT10) (CAR (NTH 2 (NTH 2 TQ))))
(CAR (NTH 3 (NTH 2 TQ)))
)
YY (+
(* (CAR PT10) (CADR (NTH 0 (NTH 2 TQ))))
(* (CADR PT10) (CADR (NTH 1 (NTH 2 TQ))))
(* (CADDR PT10) (CADR (NTH 2 (NTH 2 TQ))))
(CADR (NTH 3 (NTH 2 TQ)))
)
tt (trans (LIST XX YY) 0 1)
) ;块内对象
)
我不知道你LISP的坐标怎么得来的,如果可以用NENTSEL来获得的话,就可以用它获得的转换矩阵得到正确的点。(这是我自己写的一个标注的程序,2D块旋转、镜像后可以取得正确的坐标)。
不知道对你有没有用 TQ=(nENTsel "\n选取要标注-对象")
PT10为LISP得到的点坐标
页:
[1]
2