(trans)解释
你好我承认,(trans)是我一直忽视学习的可怕功能之一,它似乎太复杂了,现在是时候处理它了,所以让我把迄今为止我所了解的全部布局好,
trans是将坐标的实际位置转换为Autocad中可用的任何坐标系。
WCS
世界坐标系实际上是支持所有其他系统的世界固定坐标系。
UCS
在WCS之上,用户可以定义一个新的坐标层,通过用户定义的原点位置和旋转,与WCS的关系由Autocad维护。
接触网
对象系统坐标
(从tp传输pt)
对象不会因从一个坐标系切换到另一个坐标系而更改其位置,autocad会在系统之间自动转换。
对于Autolisp编程,这种自动转换不会发生,编码为在WCS中绘制的对象在具有不同原点的UCS上绘制时不会相同。
(trans)用于进行此翻译。
思想的终结
我还没有得到的东西
1.关于OCS,entget重新记录的坐标假设显示了对象的相对坐标,但它们是相对于WCS的,我缺少什么?
关于使用向量而不是坐标,你能举个例子吗?
3.在Mac Lee的一段代码中,我看到:
enx (entget (ssname sel (1- inc)))
spf (polar '(0.0 0.0) (+ (cdr (assoc 50 enx)) (/ pi 2.0)) (* (cdr (assoc 40 enx)) spf))
vec (trans spf (trans '(0.0 0.0 1.0) 1 0 t) 0)
有人能解释一下吗(包括作者:)
谢谢
谢伊 我解释得不好,是关于XY平面在z轴上的旋转,
如果我错了,请告知thanx
在数学方面:
(defun shay:Trans? (p bp v / ); p= pt bp=base v=radians
(list
(+(*(- (car p) (car bp)) (cos v))
(*(- (cadr p) (cadr bp)) (sin v)))
(-(*(- (cadr p) (cadr bp)) (cos v))
(*(- (car p) (car bp)) (sin v )))
(caddr p)
)
)
示例如何转换为新坐标?
(104,103,5.0) --> (5.0 0.0 5.0)
这是一个理论,因此可以在WCS中测试
(setq基'(100.100.0);
pt’(104.103.5.0))
_$(shay:Trans?pt base(angle base pt));
(5.0 4.44089e-016 5.0)
_$
请参见我的解释:
http://www.theswamp.org/index.php?topic=47544.msg525391#msg525391
关于反式翻译的解释,有几个可以找到——这里有几个:
http://www.theswamp.org/index.php?topic=13526.0
http://www.theswamp.org/index.php?topic=31802
谢谢李
由于我的(跨)集我工作非常努力,我的大脑正在燃烧试图抓住这个主题,
我了解了你发布的链接,你的文本对齐代码,但仍然不能说我赢得了这个主题
根据(trans)文档示例,
我试图从文本的插入点画一条线,
我旋转UCS,粘贴一段文本,然后执行以下操作:
(defun txt()
(setq ent(entget(car(entsel))))
(setq ip (cdr(assoc 10 ent)))
(setq ip (trans ip ent 1))
(command "_line" ip)
)
我得到了这个错误:
; error: bad argument type: coordinate system specification:
((-1 . <Entity name: 7ffffbaec70>)
(0 . "TEXT")
(330 . <Entity name: 7ffffb189f0>)
(5 . "1BF")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbText")
(10 14.9945 10.9974 0.0)
(40 . 0.2)
(1 . "(command \"_point\" spf)")
(50 . 0.0)
(41 . 1.0)
(51 . 0.0)
(7 . "Standard")
(71 . 0)
(72 . 0)
(11 0.0 0.0 0.0)
(210 0.0 0.0 1.0)
(100 . "AcDbText")
(73 . 0))
怎么了? 尝试使用en not ent
(setq en (car (entsel)))
..
..
(trans ip en 1)
你认为耳鼻喉科不是空的和受保护的吗? 不,您的ent只是一个entget列表,而不是一个ename(car(entsel)) hanhphuc正确-
trans函数将接受对应于坐标系枚举的整数(0=WCS,1=UCS等)、使用任意轴算法构建坐标系的法向量或实体名称(函数将使用实体的OCS)。
在代码中,您提供的是DXF组码的关联列表,该列表不是有效参数。
我还建议考虑对对象捕捉的可能干扰:
(defun txt ( / ent )
(if (setq ent (car (entsel)))
(command "_.line" "_non" (trans (cdr (assoc 10 (entget ent))) ent 1) "\\" "")
)
(princ)
) 你好
(setvar "PDMODE" 34)
(setq p 0.0)
(setq n 0.0)
(defun test1 (/ p n)
(setq p (getpoint))
(repeat 5
(setq p (append (list (+ (car p) 10.0)) (list (cadr p))))
(setq p (trans p 0 1))
(command "_.point" "_non" p
)
)
)
如果我修改UCS,这段代码正在形成角度点顺序。。。。为什么?
和没有trans似乎是预期的结果?
困惑的
getpoint返回与UCS相关的点。
页:
[1]
2