jammie 发表于 2022-7-5 17:36:13

没有经过严格测试,但有一种替代方法
 
(defun c:anglefix (/ object lineAngle tmpPoint)

(setq object (vlax-ename->vla-object (car (entsel))))

(setq lineAngle
(angle
   (vlax-curve-getFirstDeriv object 0.0)
   '(0 0 0)
   )
   )

(if
   (and
   (> lineAngle (* pi 0.5))
   (< lineAngle (* pi 1.5))
   )
   (progn

   (setq tmpPoint (vla-get-StartPoint object))

   (vla-put-StartPoint object (vla-get-EndPoint object))
   (vla-put-EndPoint object tmpPoint)
   )
   )
    )

Lee Mac 发表于 2022-7-5 17:39:16

我建议如下:
(defunc:fliplines(/ang i p q s x)(setqang(eval(list'lambda'(a b)(list'rem'list+[]-list(if(zerop(getvar'angdir))“+'-(角度a b)(getvar'angbase))))(+pipi))(if(setqs(ssget“_X”'((0。“LINE”)))(重复[setqi(sslengths))(setqx(entget(ssnames(setqi(1-i)))p(assoc10 x)q(assoc11 x))(

ktbjx 发表于 2022-7-5 17:43:09

 
谢谢李先生!
 
感谢Grrr先生!谢谢你教我一些

Grrr 发表于 2022-7-5 17:48:36

至少现在我知道它必须是(trans…0 1)。

Lee Mac 发表于 2022-7-5 17:50:02

 
不客气。
 
 
实际上,线端点是相对于WCS存储的,如果在计算角度之前不进行变换,则会投影到当前UCS平面。
 
不过,我怀疑这个特殊情况下的问题更多地是OP测量相对于本地ANGBASE/ANGDIR设置的角度的结果。

ktbjx 发表于 2022-7-5 17:53:06

 
这与我们在angbase和angdir上的设置有关?。。。很高兴知道!我以为天使们读到了同样的lol

Lee Mac 发表于 2022-7-5 17:56:52

 
这取决于您如何测量它们,即您是否测量相对于WCS/UCS X轴的顺时针/逆时针角度(ANGDIR)以及是否相对于ANGBASE。
页: 1 [2]
查看完整版本: 更改线条角度