KRBeckman 发表于 2022-7-6 12:06:38

(setq sfv (getvar 'ucsname))

Lee Mac 发表于 2022-7-6 12:11:35

哦,对了,我想可能是在另一个节目里。
 
嗯,我无法解释——正如我所说,UCSNAME=“”要么是世界,要么是一个未命名的UCS。你确定你没有被观点搞糊涂吗?

KRBeckman 发表于 2022-7-6 12:14:42

是的,因为当我双击视口时,我试图从中提取usc名称,并在命令行中键入(getvar'uscname),我得到“*FRONT*”。不用担心,李,谢谢你的努力。是否有人可以在AutoCAD 2008中尝试此操作,并查看此版本是否存在问题?

Lee Mac 发表于 2022-7-6 12:17:21

 
这样行吗?请记住,模型空间和图纸空间中的视口可以有不同的UCS。

KRBeckman 发表于 2022-7-6 12:20:28

是的,当手动输入/复制粘贴到命令行时,它可以工作。但是,在lisp中运行时,它不起作用

Lee Mac 发表于 2022-7-6 12:21:48

 
如果我是对的,你说如果你输入:
 

(getvar 'ucsname)
在命令行中,您可以看到“*前*”
 
但在运行函数时:
 
你得到“”?我说得对吗?
 
只是运行LISP和在命令行手动输入LISP代码之间没有区别。
 

KRBeckman 发表于 2022-7-6 12:26:42

 
是的,事情就是这样。
 
 
我知道,这就是我要说的,没有任何意义。

KRBeckman 发表于 2022-7-6 12:30:17

李,也许你会有一个更好的解决方案来实现我的目标。。。
 
从顶视图往下看时,我在模型空间中绘制的对象大多比深宽,但也有一些比宽深。在这种情况下,我希望通过将俯视图扭转90°,旋转我的前视图使其成为左视图,旋转我的右视图使其成为前视图,使对象更好地适合视口(和页面)。(基本上与将模型空间中的对象旋转90°相同,这要容易得多,但我的雇主不允许我这样做,因为这会导致客户在他们的图纸中插入我们的符号时出现问题)
 
以下是我目前掌握的信息:
 
(defun c:rt ()

(setvar 'tilemode 0)
(command "_.zoom" "_w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
(command "_.mspace")
(setvar 'cvport 2)
(setq tvt (* (/ (+ (getvar 'viewtwist) (/ pi 2)) pi) 180))
(command "_.dview" "" "_twist" tvt "")
(command "_.zoom" "_e")
(setvar 'cvport 5)
(setq sfv (getvar 'ucsname))
(setq efv (cond ( (= sfv "*Front*") "_Left")
   ( (= sfv "*Left*") "_Back")
   ( (= sfv "*Back*") "_Right")
   ( (= sfv "*Right*") "_Front")))
(command "_.-view" efv)
(command "_.zoom" "_e")
(setvar 'cvport 4)
(setq srv (getvar 'ucsname))
(setq erv (cond ( (= sfv "*Front*") "_Left")
   ( (= sfv "*Left*") "_Back")
   ( (= sfv "*Back*") "_Right")
   ( (= sfv "*Right*") "_Front")))
(command "_.-view" erv)
(command "_.zoom" "_e")
(command "_.pspace")
(princ)
(princ "\nAll modelspace items rotated 90° about the top plane")
(princ))

 
如果有更好的办法,我洗耳恭听。

Lee Mac 发表于 2022-7-6 12:32:03

我不能完全做到这一点,但如果我没有误解其意图,可能会有类似的事情发生。也许其他人可以纠正它
 
5

KRBeckman 发表于 2022-7-6 12:36:12

因此,为了进行尝试,我将系统ucs复制到我自己命名的ucs,命名为Top、Front、Right、Left、Back和Bottom,并尝试在上面运行我的lisp。。。现在,当在lisp中运行时,我得到了sfv的“Top”,当我将“(setq-sfv(getvar'ucsname))行复制粘贴到命令行时,我得到了“Front”。我真的不明白发生了什么事。
页: 1 [2]
查看完整版本: 为什么可以';t I setq a值