当然这只是得到视口大小比,而不是比例?
啊哈,我看到他们增加了45(mspace中的viewsize)。
A U T O C A D (R)
Copyright (c) 1982-1998Autodesk, Inc.All Rights Reserved.
Release 14.01 (4/21/98) Microsoft Windows NT Version 5.1 (x86)
Entity Information ....
Select objects: 1 found
Select objects: <RO> Entity Name - (-1 . <Entity name: 4e21618>)
<RO> Entity Type - (0 . "VIEWPORT")
<RO> Handle - (5 . "223")
<RO> SubClass - (100 . "AcDbEntity")
Paper Space - (67 . 1)
Layer - (8 . "PLOT")
Color - (62 . 6)
<RO> SubClass - (100 . "AcDbViewport")
First Point - (10 53.5 59.75 0.0)
<RO> Width - (40 . 35.0)
<RO> Height - (41 . 23.5)
<RO> Status - (68 . 6)
<RO> ID - (69 . 5)
<RO> APPID - (-3 ("ACAD" (1000 . "MVIEW") (1002 . "{") (1070 . 16)
(1010 0.0 0.0 0.0) (1010 0.0 0.0 1.0) (1040 . 0.0) (1040 . 585.0) (1040 .
339.638) (1040 . 221.5) (1040 . 50.0) (1040 . 0.0) (1040 . 0.0) (1070 . 0)
(1070 . 50) (1070 . 1) (1070 . 1) (1070 . 1) (1070 . 0) (1070 . 0) (1070 . 1)
(1040 . 0.0) (1040 . 0.0) (1040 . 0.0) (1040 . 1.0) (1040 . 1.0) (1040 . 12.0)
(1040 . 12.0) (1070 . 1) (1002 . "{") (1003 . "1D") (1003 . "2D") (1003 .
"FS-EL") (1003 . "FS-DIM") (1003 . "FS-PL") (1003 . "FS-GA") (1003 . "FS-")
(1003 . "FS-SLAB") (1003 . "CL") (1003 . "FS-WB") (1003 . "FS-PVC") (1003 .
"FS-ST") (1003 . "FS-RF") (1003 . "200") (1003 . "200-2D-ONLY") (1003 . "204")
(1003 . "204-2D-ONLY") (1003 . "206") (1003 . "206-2D-ONLY") (1003 .
"206-KCL-DO") (1003 . "206-KCL-DS") (1003 . "400") (1003 . "406") (1003 .
"450") (1003 . "460") (1003 . "470") (1003 . "480") (1003 . "490") (1003 .
"350") (1003 . "201") (1003 . "201-2D-ONLY") (1003 . "202") (1003 .
"202-2D-ONLY") (1003 . "700") (1003 . "700-3D-ONLY") (1003 . "300") (1003 .
"306") (1003 . "205") (1002 . "}") (1002 . "}")))
R14 DXF转储
-大卫 (defun _VPScale (obj)
(cond
((eq (type obj) 'VLA-OBJECT) (/ 1. (vla-get-customscale obj)))
((eq (type obj) 'ENAME) ((lambda (e) (/ (cdr (assoc 45 e)) (cdr (assoc 41 e)))) (entget obj)))
)
) 伙计们,我正在尝试获取视口比例,并在此基础上将dimstyle和leader样式设置为当前。不过我似乎有点迷路了。有人能帮忙吗?
(defun c:vpdisp (/ cv ss en ed ys vs vps b c)
(command "_.insert" "CCC_Drawing_Dim_Leader_Styles=" nil)
(command "_.purge" "_b" "CCC_Drawing_Dim_Leader_Styles" "_n")
(command "_.MSPACE")
(if (/= (getvar "TILEMODE") 0)
(setvar "TILEMODE" 0))
(if (/= (getvar "CVPORT") 1)
(progn
(setq ss (ssget "X" (list (cons 0 "VIEWPORT")(cons 69 (getvar "CVPORT"))))
en (ssname ss 0)
ed (entget en)
cv (cdr (assoc 69 ed))
ys (cdr (assoc 41 ed)))
(command "_.PSPACE")
(setvar "CVPORT" cv)
(setq vs (getvar "VIEWSIZE")
vps (rtos (/ vs ys) 2 4))
(princ (strcat "\nThe VIEWPORT Scale is 1 = " vps)))
(cond
((= vps 0.02)(setq b "CCC_1_50000_Dims")(setq c "CCC_Leader_1_50000"))
((= vps 0.04)(setq b "CCC_1_25000_Dims")(setq c "CCC_Leader_1_25000"))
((= vps 0.05)(setq b "CCC_1_20000_Dims")(setq c "CCC_Leader_1_20000"))
((= vps 0.1)(setq b "CCC_1_10000_Dims")(setq c "CCC_Leader_1_10000"))
((= vps 0.2)(setq b "CCC_1_5000_Dims")(setq c "CCC_Leader_1_5000"))
((= vps 0.4)(setq b "CCC_1_2500_Dims")(setq c "CCC_Leader_1_2500"))
((= vps 0.5)(setq b "CCC_1_2000_Dims")(setq c "CCC_Leader_1_2000"))
((= vps 0.(setq b "CCC_1_1250_Dims")(setq c "CCC_Leader_1_1250"))
((= vps 1)(setq b "CCC_1_1000_Dims")(setq c "CCC_Leader_1_1000"))
((= vps 2)(setq b "CCC_1_500_Dims")(setq c "CCC_Leader_1_500"))
((= vps 4)(setq b "CCC_1_250_Dims")(setq c "CCC_Leader_1_250"))
((= vps 5)(setq b "CCC_1_200_Dims")(setq c "CCC_Leader_1_200"))
((= vps (setq b "CCC_1_125_Dims")(setq c "CCC_Leader_1_125"))
((= vps 10)(setq b "CCC_1_100_Dims")(setq c "CCC_Leader_1_100"))
((= vps 20)(setq b "CCC_1_50_Dims")(setq c "CCC_Leader_1_50"))
((= vps 40)(setq b "CCC_1_25_Dims")(setq c "CCC_Leader_1_25"))
((= vps 50)(setq b "CCC_1_20_Dims")(setq c "CCC_Leader_1_20"))
((= vps 100)(setq b "CCC_1_10_Dims")(setq c "CCC_Leader_1_10"))
)
(command "_.dimstyle" "r" b)
(alert "\nYour Are Not In An Active MODELSPACE Viewport"))
(prin1))
在过去的几天里,我一直在研究这个问题,我不断发现语法错误。有人能帮忙吗??
(defun c:vpdisp (/ cv ss en ed ys vs vps b c)
(command "_.insert" "CCC_Drawing_Dim_Leader_Styles=" nil)
(command "_.purge" "_b" "CCC_Drawing_Dim_Leader_Styles" "_n")
(command "_.MSPACE")
(if (/= (getvar "TILEMODE") 0)
(setvar "TILEMODE" 0))
(if (/= (getvar "CVPORT") 1)
(progn
(setq ss (ssget "X" (list (cons 0 "VIEWPORT")(cons 69 (getvar "CVPORT"))))
en (ssname ss 0)
ed (entget en)
cv (cdr (assoc 69 ed))
ys (cdr (assoc 41 ed)))
(command "_.PSPACE")
(setvar "CVPORT" cv)
(setq vs (getvar "VIEWSIZE"))
(setq vps (rtos (/ vs ys) 2 4))
(alert "\nYour Are Not In An Active MODELSPACE Viewport")
(cond
((= vps 0.02)(setq b "CCC_1_50000_Dims")(setq c "CCC_Leader_1_50000"))
((= vps 0.04)(setq b "CCC_1_25000_Dims")(setq c "CCC_Leader_1_25000"))
((= vps 0.05)(setq b "CCC_1_20000_Dims")(setq c "CCC_Leader_1_20000"))
((= vps 0.1)(setq b "CCC_1_10000_Dims")(setq c "CCC_Leader_1_10000"))
((= vps 0.2)(setq b "CCC_1_5000_Dims")(setq c "CCC_Leader_1_5000"))
((= vps 0.4)(setq b "CCC_1_2500_Dims")(setq c "CCC_Leader_1_2500"))
((= vps 0.5)(setq b "CCC_1_2000_Dims")(setq c "CCC_Leader_1_2000"))
((= vps 0.(setq b "CCC_1_1250_Dims")(setq c "CCC_Leader_1_1250"))
((= vps 1)(setq b "CCC_1_1000_Dims")(setq c "CCC_Leader_1_1000"))
((= vps 2)(setq b "CCC_1_500_Dims")(setq c "CCC_Leader_1_500"))
((= vps 4)(setq b "CCC_1_250_Dims")(setq c "CCC_Leader_1_250"))
((= vps 5)(setq b "CCC_1_200_Dims")(setq c "CCC_Leader_1_200"))
((= vps (setq b "CCC_1_125_Dims")(setq c "CCC_Leader_1_125"))
((= vps 10)(setq b "CCC_1_100_Dims")(setq c "CCC_Leader_1_100"))
((= vps 20)(setq b "CCC_1_50_Dims")(setq c "CCC_Leader_1_50"))
((= vps 40)(setq b "CCC_1_25_Dims")(setq c "CCC_Leader_1_25"))
((= vps 50)(setq b "CCC_1_20_Dims")(setq c "CCC_Leader_1_20"))
((= vps 100)(setq b "CCC_1_10_Dims")(setq c "CCC_Leader_1_10"))
))
(prin1))
一般来说,语法错误很容易发现/修复。
如果您正在VLIDE中编辑,请运行“在编辑器中检查文本”命令。这将告诉您静态代码中是否有错误。
如果不明显,则将光标放在左括号[在(defun…]旁边,然后双击。
您的所有代码都突出显示了吗?如果不是,那就是你的问题——括号不匹配。
在这种情况下,看起来您只是在文件末尾缺少了一个右括号。 谢谢你的提示。老实说,我有点避开了vlide,因为我总是发现它很难使用。不过我接受了你的建议,取得了很大的进步。以后我会先把我的错误提交给vlide。这是我到目前为止得到的:
(defun c:vpdisp (/ cv ss en ed ys vs vps b c)
(command "_.insert" "CCC_Drawing_Dim_Leader_Styles=" nil)
(command "_.purge" "_b" "CCC_Drawing_Dim_Leader_Styles" "_n")
(command "_.MSPACE")
(if (/= (getvar "TILEMODE") 0)
(setvar "TILEMODE" 0))
(if (/= (getvar "CVPORT") 1)
(progn
(setq ss (ssget "X" (list (cons 0 "VIEWPORT")(cons 69 (getvar "CVPORT"))))
en (ssname ss 0)
ed (entget en)
cv (cdr (assoc 69 ed))
ys (cdr (assoc 41 ed)))
(command "_.PSPACE")
;(setvar "CVPORT" cv)
(setq vs (getvar "VIEWSIZE"))
(setq vps (rtos (/ vs ys) 2 4))
;(princ (strcat "\nThe VIEWPORT Scale is 1 = " vps))
;(setq vps "0.8")
;(alert "\nYour Are Not In An Active MODELSPACE Viewport")
)
)
(cond
((= vps "0.02")(setq b "CCC_1_50000_Dims")(setq c "CCC_Leader_1_50000"))
((= vps "0.04")(setq b "CCC_1_25000_Dims")(setq c "CCC_Leader_1_25000"))
((= vps "0.05")(setq b "CCC_1_20000_Dims")(setq c "CCC_Leader_1_20000"))
((= vps "0.1")(setq b "CCC_1_10000_Dims")(setq c "CCC_Leader_1_10000"))
((= vps "0.2")(setq b "CCC_1_5000_Dims")(setq c "CCC_Leader_1_5000"))
((= vps "0.4")(setq b "CCC_1_2500_Dims")(setq c "CCC_Leader_1_2500"))
((= vps "0.5")(setq b "CCC_1_2000_Dims")(setq c "CCC_Leader_1_2000"))
((= vps "0.8")(setq b "CCC_1_1250_Dims")(setq c "CCC_Leader_1_1250"))
((= vps "1")(setq b "CCC_1_1000_Dims")(setq c "CCC_Leader_1_1000"))
((= vps "2")(setq b "CCC_1_500_Dims")(setq c "CCC_Leader_1_500"))
((= vps "4")(setq b "CCC_1_250_Dims")(setq c "CCC_Leader_1_250"))
((= vps "5")(setq b "CCC_1_200_Dims")(setq c "CCC_Leader_1_200"))
((= vps "8")(setq b "CCC_1_125_Dims")(setq c "CCC_Leader_1_125"))
((= vps "10")(setq b "CCC_1_100_Dims")(setq c "CCC_Leader_1_100"))
((= vps "20")(setq b "CCC_1_50_Dims")(setq c "CCC_Leader_1_50"))
((= vps "40")(setq b "CCC_1_25_Dims")(setq c "CCC_Leader_1_25"))
((= vps "50")(setq b "CCC_1_20_Dims")(setq c "CCC_Leader_1_20"))
((= vps "100")(setq b "CCC_1_10_Dims")(setq c "CCC_Leader_1_10"))
)
(command "_.dimstyle" "r" b)
(prin1))
我的问题是没有正确计算视口比例,因此没有设置维度。我将vps变量设置为标准值,并将dimstyle设置为精细。我看了Alanjt获取视口比例的方法,但我不知道如何合并它。我一直在尝试将其写入代码时出错。
有人能帮助进行视口比例计算吗?
谢谢 尝试
(equal (/ vs ys) 0.02 1e-2)
or
(= vps "0.0200")
对于每个值。
如果使用字符串比较,请确保DIMZIN设置为0-大卫 对不起,大卫,但这怎么合适呢?0.02 1e-2)中的e是一个变量吗?
这是一个实数。
提示:查看rtos 1e-2 2返回的内容
页:
1
[2]