eimimitu 发表于 2022-7-5 15:38:49

WCS原点

我到处找,结果空空如也。。。
 
简单例程执行以下操作:
 

(vl-cmdf "ucs" "w");switches to WCS-good
(vl-cmdf "copy" ent "" "_non" bse "_non" "*0,0");copies ent from bse point to WCS origin-not good
(vl-cmdf "dxfout" "" "v" "lt2000" "o" "l" "" "");export copied to DXF-good
(entdel (entlast));deletes copied-good
(vl-cmdf "ucs" "p");returns to previous UCS-good

 
问题:它将对象复制到例程启动时设置的UCS原点。。。当我调用例程时,只有当图形已经在WCS中时,上述操作才有效。。当我将[“ucs”“w”]命令放在“ent”的ssget和“bse”函数的getpoint之前时,它也可以工作。但视觉效果不太流畅,所以不适合我的目标。。。
 
如何强制“ent”从“bse”到WCS原点?
 
我认为答案是跨函数的,但我不知道如何实现它。。听起来很简单,但究竟是什么。。。感谢您的任何帮助!

Roy_043 发表于 2022-7-5 16:02:47

而不是:
使用
(trans '(0 0 0) 0 1)

eimimitu 发表于 2022-7-5 16:17:37

罗伊:
不幸的是没有骰子。。。做完全相同的事情:/
 
当我在AutoCAD中一次执行一个命令时,它也可以正常工作。。。但在lisp中,它就像是将对象复制到原点的速度比UCS更新到WCS的速度快,即使它放置在copy命令之前

Lee Mac 发表于 2022-7-5 16:28:43

更改:
(vl-cmdf "copy" ent "" "_non" bse "_non" "*0,0")至:
(vl-cmdf "_.copy" ent "" "_non" (trans bse 1 0) "_non" '(0 0 0))
 
或者按照罗伊的建议删除:
5

eimimitu 发表于 2022-7-5 16:49:03

是的,是的。。。
 
现在你把它分解成这样,我读到的所有内容突然都有了意义:
 
Roy只是将wcs(0)的原点转换为ucs(1),因为我的“bse”点是在ucs中指定的
Mac先生正在将“bse”从ucs(1)翻译为wcs(0),并将其放在原点(0 0)。。。
尤里卡!
 
谢谢你们!
页: [1]
查看完整版本: WCS原点