动态块位置信息
大家好,好的,我有一个动态块(在我的例子中是绿色的),它构建在x-y平面上。我可以改变它的长度,宽度,延伸它,围绕基点旋转它。雅达雅达雅达。我工作的公司需要的一系列功能。当我们将其插入3D模型时,我们将其定位,使Y轴成为Z轴,X轴可以位于X-Y平面内的任何位置。我试图创建一个lisp,将其相对于第二个块(在我的示例中为红色)移动。有人知道获取动态块旋转信息的方法吗。我不能使用misc部分的“旋转”,因为它在块x-y平面而不是模型x-y平面中操作。
我在下面用Axis创建了一个图像。希望能够澄清。这些不是实际的块,只是示例形状。
希望有人能帮忙。我试过几件事都没有成功。
好的,在做了更多的研究之后,我想我需要得到每个对象的变换矩阵。这显然可以使用“nentselp”获得,但有没有办法使用它来获得一组动态块实体的一批转换对象?Nentselp似乎只接受选择点。 如果有人想做类似的事情。。。这是我cam编写的代码的一部分。希望这对将来的人有所帮助。还可以修改动态块的配置方式,动态块编辑器中的Z轴将成为构成“法线”值的单位向量的参考。所以我必须把单位向量绕z轴旋转90度。
(setq pl_set (ssget '((0 . "INSERT"))))
(setq pl_set_lgth (SSLENGTH pl_set))
(setq br_item 0)
(repeat pl_set_lgth
(setq en (SSNAME pl_set br_item))
(setq entvla (vlax-Ename->Vla-Object en))
(setq unitVec (vlax-get entvla 'normal))
(setq InsrtPnt (vlax-get entvla 'InsertionPoint))
(if (getdynpropvalue entvla "BRCKT_ELEV X")
(progn
(setq brace_dist (abs (getdynpropvalue entvla "BRCKT_ELEV X")))
(princ "\n unitVec is:") ;to be removed
(princ unitVec) ;to be removed
(setq i_val (car unitVec))
(setq j_val (cadr unitVec))
(setq i_val_n (* 1.0 j_val))
(setq j_val_n (* -1.0 i_val))
(setq z_rot_rad (atan j_val_n i_val_n))
页:
[1]