乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: woodman78

[编程交流] 视口比例

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:46:36 | 显示全部楼层
 
当然这只是得到视口大小比,而不是比例?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:49:18 | 显示全部楼层
 
 
啊哈,我看到他们增加了45(mspace中的viewsize)。
 
  1.      A U T O C A D (R)
  2. Copyright (c) 1982-1998  Autodesk, Inc.  All Rights Reserved.
  3. Release 14.01 (4/21/98) Microsoft Windows NT Version 5.1 (x86)
  4. Entity Information ....
  5. Select objects: 1 found
  6. Select objects:      <RO> Entity Name - (-1 . <Entity name: 4e21618>)
  7.    <RO> Entity Type - (0 . "VIEWPORT")
  8.         <RO> Handle - (5 . "223")
  9.       <RO> SubClass - (100 . "AcDbEntity")
  10.         Paper Space - (67 . 1)
  11.               Layer - (8 . "PLOT")
  12.               Color - (62 . 6)
  13.       <RO> SubClass - (100 . "AcDbViewport")
  14.         First Point - (10 53.5 59.75 0.0)
  15.          <RO> Width - (40 . 35.0)
  16.         <RO> Height - (41 . 23.5)
  17.         <RO> Status - (68 . 6)
  18.             <RO> ID - (69 . 5)
  19.          <RO> APPID - (-3 ("ACAD" (1000 . "MVIEW") (1002 . "{") (1070 . 16)
  20. (1010 0.0 0.0 0.0) (1010 0.0 0.0 1.0) (1040 . 0.0) (1040 . 585.0) (1040 .
  21. 339.638) (1040 . 221.5) (1040 . 50.0) (1040 . 0.0) (1040 . 0.0) (1070 . 0)
  22. (1070 . 50) (1070 . 1) (1070 . 1) (1070 . 1) (1070 . 0) (1070 . 0) (1070 . 1)
  23. (1040 . 0.0) (1040 . 0.0) (1040 . 0.0) (1040 . 1.0) (1040 . 1.0) (1040 . 12.0)
  24. (1040 . 12.0) (1070 . 1) (1002 . "{") (1003 . "1D") (1003 . "2D") (1003 .
  25. "FS-EL") (1003 . "FS-DIM") (1003 . "FS-PL") (1003 . "FS-GA") (1003 . "FS-")
  26. (1003 . "FS-SLAB") (1003 . "CL") (1003 . "FS-WB") (1003 . "FS-PVC") (1003 .
  27. "FS-ST") (1003 . "FS-RF") (1003 . "200") (1003 . "200-2D-ONLY") (1003 . "204")
  28. (1003 . "204-2D-ONLY") (1003 . "206") (1003 . "206-2D-ONLY") (1003 .
  29. "206-KCL-DO") (1003 . "206-KCL-DS") (1003 . "400") (1003 . "406") (1003 .
  30. "450") (1003 . "460") (1003 . "470") (1003 . "480") (1003 . "490") (1003 .
  31. "350") (1003 . "201") (1003 . "201-2D-ONLY") (1003 . "202") (1003 .
  32. "202-2D-ONLY") (1003 . "700") (1003 . "700-3D-ONLY") (1003 . "300") (1003 .
  33. "306") (1003 . "205") (1002 . "}") (1002 . "}")))

 
R14 DXF转储
 
-大卫
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:54:22 | 显示全部楼层
  1. (defun _VPScale (obj)
  2. (cond
  3.    ((eq (type obj) 'VLA-OBJECT) (/ 1. (vla-get-customscale obj)))
  4.    ((eq (type obj) 'ENAME) ((lambda (e) (/ (cdr (assoc 45 e)) (cdr (assoc 41 e)))) (entget obj)))
  5. )
  6. )
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 10:56:53 | 显示全部楼层
伙计们,我正在尝试获取视口比例,并在此基础上将dimstyle和leader样式设置为当前。不过我似乎有点迷路了。有人能帮忙吗?
 
  1. (defun c:vpdisp (/ cv ss en ed ys vs vps b c)
  2. (command "_.insert" "CCC_Drawing_Dim_Leader_Styles=" nil)
  3. (command "_.purge" "_b" "CCC_Drawing_Dim_Leader_Styles" "_n")
  4.         (command "_.MSPACE")
  5. (if (/= (getvar "TILEMODE") 0)
  6.      (setvar "TILEMODE" 0))
  7. (if (/= (getvar "CVPORT") 1)
  8.      (progn
  9.         (setq ss (ssget "X" (list (cons 0 "VIEWPORT")(cons 69 (getvar "CVPORT"))))
  10.               en (ssname ss 0)
  11.               ed (entget en)
  12.               cv (cdr (assoc 69 ed))
  13.               ys (cdr (assoc 41 ed)))
  14.         (command "_.PSPACE")
  15.         (setvar "CVPORT" cv)
  16.         (setq vs (getvar "VIEWSIZE")
  17.     vps (rtos (/ vs ys) 2 4))
  18.         (princ (strcat "\nThe VIEWPORT Scale is 1 = " vps)))
  19.    (cond
  20.      ((= vps 0.02)(setq b "CCC_1_50000_Dims")(setq c "CCC_Leader_1_50000"))
  21.      ((= vps 0.04)(setq b "CCC_1_25000_Dims")(setq c "CCC_Leader_1_25000"))
  22.      ((= vps 0.05)(setq b "CCC_1_20000_Dims")(setq c "CCC_Leader_1_20000"))
  23.      ((= vps 0.1)(setq b "CCC_1_10000_Dims")(setq c "CCC_Leader_1_10000"))
  24.      ((= vps 0.2)(setq b "CCC_1_5000_Dims")(setq c "CCC_Leader_1_5000"))
  25.      ((= vps 0.4)(setq b "CCC_1_2500_Dims")(setq c "CCC_Leader_1_2500"))
  26.      ((= vps 0.5)(setq b "CCC_1_2000_Dims")(setq c "CCC_Leader_1_2000"))
  27.      ((= vps 0.(setq b "CCC_1_1250_Dims")(setq c "CCC_Leader_1_1250"))
  28.      ((= vps 1)(setq b "CCC_1_1000_Dims")(setq c "CCC_Leader_1_1000"))
  29.      ((= vps 2)(setq b "CCC_1_500_Dims")(setq c "CCC_Leader_1_500"))
  30.      ((= vps 4)(setq b "CCC_1_250_Dims")(setq c "CCC_Leader_1_250"))
  31.      ((= vps 5)(setq b "CCC_1_200_Dims")(setq c "CCC_Leader_1_200"))
  32.      ((= vps (setq b "CCC_1_125_Dims")(setq c "CCC_Leader_1_125"))
  33.      ((= vps 10)(setq b "CCC_1_100_Dims")(setq c "CCC_Leader_1_100"))
  34.      ((= vps 20)(setq b "CCC_1_50_Dims")(setq c "CCC_Leader_1_50"))
  35.      ((= vps 40)(setq b "CCC_1_25_Dims")(setq c "CCC_Leader_1_25"))
  36.      ((= vps 50)(setq b "CCC_1_20_Dims")(setq c "CCC_Leader_1_20"))
  37.      ((= vps 100)(setq b "CCC_1_10_Dims")(setq c "CCC_Leader_1_10"))
  38.    )
  39. (command "_.dimstyle" "r" b)
  40.      (alert "\nYour Are Not In An Active MODELSPACE Viewport"))
  41. (prin1))
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 11:00:19 | 显示全部楼层
在过去的几天里,我一直在研究这个问题,我不断发现语法错误。有人能帮忙吗??
 
  1. (defun c:vpdisp (/ cv ss en ed ys vs vps b c)
  2. (command "_.insert" "CCC_Drawing_Dim_Leader_Styles=" nil)
  3. (command "_.purge" "_b" "CCC_Drawing_Dim_Leader_Styles" "_n")
  4.         (command "_.MSPACE")
  5. (if (/= (getvar "TILEMODE") 0)
  6.      (setvar "TILEMODE" 0))
  7. (if (/= (getvar "CVPORT") 1)
  8.      (progn
  9.         (setq ss (ssget "X" (list (cons 0 "VIEWPORT")(cons 69 (getvar "CVPORT"))))
  10.               en (ssname ss 0)
  11.               ed (entget en)
  12.               cv (cdr (assoc 69 ed))
  13.               ys (cdr (assoc 41 ed)))
  14.         (command "_.PSPACE")
  15.         (setvar "CVPORT" cv)
  16.         (setq vs (getvar "VIEWSIZE"))
  17.         (setq vps (rtos (/ vs ys) 2 4))
  18.      (alert "\nYour Are Not In An Active MODELSPACE Viewport")
  19.    (cond
  20.      ((= vps 0.02)(setq b "CCC_1_50000_Dims")(setq c "CCC_Leader_1_50000"))
  21.      ((= vps 0.04)(setq b "CCC_1_25000_Dims")(setq c "CCC_Leader_1_25000"))
  22.      ((= vps 0.05)(setq b "CCC_1_20000_Dims")(setq c "CCC_Leader_1_20000"))
  23.      ((= vps 0.1)(setq b "CCC_1_10000_Dims")(setq c "CCC_Leader_1_10000"))
  24.      ((= vps 0.2)(setq b "CCC_1_5000_Dims")(setq c "CCC_Leader_1_5000"))
  25.      ((= vps 0.4)(setq b "CCC_1_2500_Dims")(setq c "CCC_Leader_1_2500"))
  26.      ((= vps 0.5)(setq b "CCC_1_2000_Dims")(setq c "CCC_Leader_1_2000"))
  27.      ((= vps 0.(setq b "CCC_1_1250_Dims")(setq c "CCC_Leader_1_1250"))
  28.      ((= vps 1)(setq b "CCC_1_1000_Dims")(setq c "CCC_Leader_1_1000"))
  29.      ((= vps 2)(setq b "CCC_1_500_Dims")(setq c "CCC_Leader_1_500"))
  30.      ((= vps 4)(setq b "CCC_1_250_Dims")(setq c "CCC_Leader_1_250"))
  31.      ((= vps 5)(setq b "CCC_1_200_Dims")(setq c "CCC_Leader_1_200"))
  32.      ((= vps (setq b "CCC_1_125_Dims")(setq c "CCC_Leader_1_125"))
  33.      ((= vps 10)(setq b "CCC_1_100_Dims")(setq c "CCC_Leader_1_100"))
  34.      ((= vps 20)(setq b "CCC_1_50_Dims")(setq c "CCC_Leader_1_50"))
  35.      ((= vps 40)(setq b "CCC_1_25_Dims")(setq c "CCC_Leader_1_25"))
  36.      ((= vps 50)(setq b "CCC_1_20_Dims")(setq c "CCC_Leader_1_20"))
  37.      ((= vps 100)(setq b "CCC_1_10_Dims")(setq c "CCC_Leader_1_10"))
  38.    ))
  39. (prin1))
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 11:04:32 | 显示全部楼层
一般来说,语法错误很容易发现/修复。
如果您正在VLIDE中编辑,请运行“在编辑器中检查文本”命令。这将告诉您静态代码中是否有错误。
如果不明显,则将光标放在左括号[在(defun…]旁边,然后双击。
您的所有代码都突出显示了吗?如果不是,那就是你的问题——括号不匹配。
在这种情况下,看起来您只是在文件末尾缺少了一个右括号。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 11:05:01 | 显示全部楼层
谢谢你的提示。老实说,我有点避开了vlide,因为我总是发现它很难使用。不过我接受了你的建议,取得了很大的进步。以后我会先把我的错误提交给vlide。这是我到目前为止得到的:
 
  1. (defun c:vpdisp (/ cv ss en ed ys vs vps b c)
  2. (command "_.insert" "CCC_Drawing_Dim_Leader_Styles=" nil)
  3. (command "_.purge" "_b" "CCC_Drawing_Dim_Leader_Styles" "_n")
  4.         (command "_.MSPACE")
  5. (if (/= (getvar "TILEMODE") 0)
  6.      (setvar "TILEMODE" 0))
  7. (if (/= (getvar "CVPORT") 1)
  8.      (progn
  9.         (setq ss (ssget "X" (list (cons 0 "VIEWPORT")(cons 69 (getvar "CVPORT"))))
  10.               en (ssname ss 0)
  11.               ed (entget en)
  12.               cv (cdr (assoc 69 ed))
  13.               ys (cdr (assoc 41 ed)))
  14.         (command "_.PSPACE")
  15.         ;(setvar "CVPORT" cv)
  16.         (setq vs (getvar "VIEWSIZE"))
  17.         (setq vps (rtos (/ vs ys) 2 4))
  18. ;(princ (strcat "\nThe VIEWPORT Scale is 1 = " vps))
  19.          ;(setq vps "0.8")
  20.      ;(alert "\nYour Are Not In An Active MODELSPACE Viewport")
  21.    )
  22. )
  23. (cond
  24.      ((= vps "0.02")(setq b "CCC_1_50000_Dims")(setq c "CCC_Leader_1_50000"))
  25.      ((= vps "0.04")(setq b "CCC_1_25000_Dims")(setq c "CCC_Leader_1_25000"))
  26.      ((= vps "0.05")(setq b "CCC_1_20000_Dims")(setq c "CCC_Leader_1_20000"))
  27.      ((= vps "0.1")(setq b "CCC_1_10000_Dims")(setq c "CCC_Leader_1_10000"))
  28.      ((= vps "0.2")(setq b "CCC_1_5000_Dims")(setq c "CCC_Leader_1_5000"))
  29.      ((= vps "0.4")(setq b "CCC_1_2500_Dims")(setq c "CCC_Leader_1_2500"))
  30.      ((= vps "0.5")(setq b "CCC_1_2000_Dims")(setq c "CCC_Leader_1_2000"))
  31.      ((= vps "0.8")(setq b "CCC_1_1250_Dims")(setq c "CCC_Leader_1_1250"))
  32.      ((= vps "1")(setq b "CCC_1_1000_Dims")(setq c "CCC_Leader_1_1000"))
  33.      ((= vps "2")(setq b "CCC_1_500_Dims")(setq c "CCC_Leader_1_500"))
  34.      ((= vps "4")(setq b "CCC_1_250_Dims")(setq c "CCC_Leader_1_250"))
  35.      ((= vps "5")(setq b "CCC_1_200_Dims")(setq c "CCC_Leader_1_200"))
  36.      ((= vps "8")(setq b "CCC_1_125_Dims")(setq c "CCC_Leader_1_125"))
  37.      ((= vps "10")(setq b "CCC_1_100_Dims")(setq c "CCC_Leader_1_100"))
  38.      ((= vps "20")(setq b "CCC_1_50_Dims")(setq c "CCC_Leader_1_50"))
  39.      ((= vps "40")(setq b "CCC_1_25_Dims")(setq c "CCC_Leader_1_25"))
  40.      ((= vps "50")(setq b "CCC_1_20_Dims")(setq c "CCC_Leader_1_20"))
  41.      ((= vps "100")(setq b "CCC_1_10_Dims")(setq c "CCC_Leader_1_10"))
  42.    )
  43. (command "_.dimstyle" "r" b)
  44. (prin1))

 
我的问题是没有正确计算视口比例,因此没有设置维度。我将vps变量设置为标准值,并将dimstyle设置为精细。我看了Alanjt获取视口比例的方法,但我不知道如何合并它。我一直在尝试将其写入代码时出错。
 
有人能帮助进行视口比例计算吗?
 
谢谢
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:09:16 | 显示全部楼层
尝试
 
  1. (equal (/ vs ys) 0.02 1e-2)
  2. or
  3. (= vps "0.0200")

 
对于每个值。
 
如果使用字符串比较,请确保DIMZIN设置为0-大卫
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 11:12:27 | 显示全部楼层
对不起,大卫,但这怎么合适呢?0.02 1e-2)中的e是一个变量吗?
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-6 11:17:30 | 显示全部楼层
 
这是一个实数。
提示:查看rtos 1e-2 2返回的内容
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 21:12 , Processed in 0.344695 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表