乐筑天下

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

[编程交流] 这个代码有什么问题?

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 11:38:02 | 显示全部楼层 |阅读模式
这个代码有什么问题?
  1. (initget "1:20 1:25 1:50 1:100 1:150")
  2. (setq DwgScl (getkword  "\n What is Drawing Scale? [1:20/1:25/1:50/1:100/1:150]"))
  3. (setq StyleName (strcat "EC-22-" (rtos DwgScl)))
  4. (setq DimName (strcat "EC-" (rtos dwgscl)))
  5. (if (= DwgScl 1:20)
  6.    (progn
  7.      (command "-style" EC-22-020 "" "" "" "" "" "" "")
  8.      (command "-dimstyle" "save" EC-020)
  9.      (if (= DwgScl 1:25)
  10.    (progn
  11.      (command "-style" EC-22-025 "" "" "" "" "" "" "")
  12.      (command "-dimstyle" "save" EC-025)
  13.      (if (= DwgScl 1:50)
  14.    (progn
  15.      (command "-style" EC-22-050 "" "" "" "" "" "" "")
  16.      (command "-dimstyle" "save" EC-050)
  17.      (if (= DwgScl 1:100)
  18.    (progn
  19.      (command "-style" EC-22-100 "" "" "" "" "" "" "")
  20.      (command "-dimstyle" "save" EC-100)
  21.      (if (= DwgScl 1:150)
  22.    (progn
  23.      (command "-style" EC-22-150 "" "" "" "" "" "" "")
  24.      (command "-dimstyle" "save" EC-150)))))))))))
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 11:46:36 | 显示全部楼层
所有程序在结束时关闭。因此,每个IF语句接收三个表达式,而不是支持的两个表达式。这是第一眼看到的。
 
但为什么不使用COND语句呢?
 
当做
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 11:56:09 | 显示全部楼层
  1. (initget "1:20 1:25 1:50 1:100 1:150")
  2. (setq DwgScl (getkword  "\n What is Drawing Scale? [1:20/1:25/1:50/1:100/1:150]"))
  3. (setq StyleName (strcat "EC-22-" (rtos DwgScl)))
  4. (setq DimName (strcat "EC-" (rtos dwgscl)))
  5. (cond
  6.   ((= DwgScl 1:20)
  7.     (command "-style" EC-22-020 "" "" "" "" "" "" "")
  8.      (command "-dimstyle" "save" EC-020))
  9.   ((= DwgScl 1:25)
  10.     (command "-style" EC-22-025 "" "" "" "" "" "" "")
  11.      (command "-dimstyle" "save" EC-025))
  12.   ((= DwgScl 1:50)
  13.     (command "-style" EC-22-050 "" "" "" "" "" "" "")
  14.      (command "-dimstyle" "save" EC-050))
  15.   ((= DwgScl 1:100)
  16.     (command "-style" EC-22-100 "" "" "" "" "" "" "")
  17.      (command "-dimstyle" "save" EC-100))
  18.   ((= DwgScl 1:150)
  19.     (command "-style" EC-22-150 "" "" "" "" "" "" "")
  20.      (command "-dimstyle" "save" EC-150))
  21.   (t (coldim)))

 
但是reutrn这个错误消息
 
  1. What is Drawing Scale? [1:20/1:25/1:50/1:100/1:150]1:50
  2. ** Error: bad argument type: numberp: "1:50" **
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:01:23 | 显示全部楼层
GETKWORD语句将返回一个字符串,但您正试图将其视为实字符串。要从用户输入中获取比例因子,可以使用:
 
  1. (substr DwgScl 3)

 
可能需要相应地调整样式名称,或在比例因子仅为两位数的输入中添加“0”。
 
当做
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 12:09:21 | 显示全部楼层
我不明白
请详细解释
 
此代码是例程的一部分
 
我本想设置所有变量,以匹配从bigining创建的公司标准,但isuue是我没有选择这个lisp作为菜单的一部分的文本,所以谁有这个lisp
但是我面临的问题是选择textstyle作为dimstyle
 
  1. (setq DwgScl (getreal "\n What is Drawing Scale: 1:"))
  2. (command "-units" "2" "0" "1" "0" "0" "n")
  3. (setq StyleName (strcat "EC-22-" (rtos DwgScl)))
  4. (setq DimName (strcat "EC-" (rtos dwgscl)))
  5. (command "-units" "2" "2" "1" "0" "0" "n")
  6. (setq TextHeight (* DwgScl 2.2))
  7. (command "-style" StyleName "romans.shx" TextHeight "08" "0" "n" "n" "n")
  8. (command "-dimstyle" "save" DimName)
  9. (command "DIMSAH" "on")
  10. (command "DIMTIX" On)
  11. (command "insunits" "4")
  12. (setvar "DIMALTF" 25.4)
  13. (setvar   "DIMALTTD" 2)
  14. (setvar   "DIMASZ" (* 0.2 DwgScl))
  15. (setvar   "DIMBLK1" "_OBLIQUE")
  16. (setvar   "DIMBLK2" "_OBLIQUE")
  17. (setvar   "DIMCEN" 0)
  18. (setvar   "DIMCLRD"
  19. (setvar   "DIMCLRE"
  20. (setvar   "DIMCLRT" 10)
  21. (setvar   "DIMDEC" 0)
  22. (setvar   "DIMDLE" (* 1 DwgScl))
  23. (setvar   "DIMDLI"
  24. (setvar   "DIMDSEP" ".")
  25. (setvar   "DIMEXE" (* 1 DwgScl))
  26. (setvar   "DIMEXO" (* 3 DwgScl))
  27. (setvar   "DIMGAP" (* 1 DwgScl))
  28. ;(setvar   "DIMLDRBLK" "")
  29. (setvar   "DIMTDEC" 0)
  30. (setvar   "DIMTMOVE" 1)
  31. (setvar   "DIMTOLJ" 1)
  32. (setvar   "DIMTXT" 12)
  33. (setvar   "DIMTZIN" 0)
  34. (setvar   "DIMZIN" 0)

 
你会发现我改变了策略,
lisp将插入一个具有公司标准的dwg文件,因此我想将其中一个作为默认值,用于例程的主要部分。
 
  1. ;To add the vertical ad horizantal dimensions
  2. ;which shoing the relation between columns and axes
  3. (defun c:coldim (/ *error* DwgScl P1 P2 P3 P4 SPC TXT UFLAG)
  4. (vl-load-com)
  5. (defun *error* (msg)
  6.    (and uFlag (vla-EndUndoMark doc))
  7.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  8.        (princ (strcat "\n** Error: " msg " **")))
  9.    (princ))
  10. (setq OldOS (getvar "osmode"))
  11. (setq OldDynmode (getvar "dynmode"))
  12. (setq OldDynprompt (getvar "dynprompt"))
  13. (setvar "osmode" 33)
  14. (setvar "dynmode" 1)
  15. (setvar "dynprompt" 1)
  16. (command "-insert" "C:/EC-Menu/Blocks/EC-standards.dwg" "0,0,0" "1" "1" "0" "explode" "")
  17. (initget "1:20 1:25 1:50 1:100 1:150")
  18. (setq DwgScl (getkword  "\n What is Drawing Scale? [1:20/1:25/1:50/1:100/1:150]"))
  19. ;(setq StyleName (strcat "EC-22-" (rtos DwgScl)))
  20. ;(setq DimName (strcat "EC-" (rtos dwgscl)))
  21. (cond
  22.   ((= DwgScl 1:20)
  23.     (command "-style" EC-22-020 "" "" "" "" "" "" "")
  24.      (command "-dimstyle" "save" EC-020))
  25.   ((= DwgScl 1:25)
  26.     (command "-style" EC-22-025 "" "" "" "" "" "" "")
  27.      (command "-dimstyle" "save" EC-025))
  28.   ((= DwgScl 1:50)
  29.     (command "-style" EC-22-050 "" "" "" "" "" "" "")
  30.      (command "-dimstyle" "save" EC-050))
  31.   ((= DwgScl 1:100)
  32.     (command "-style" EC-22-100 "" "" "" "" "" "" "")
  33.      (command "-dimstyle" "save" EC-100))
  34.   ((= DwgScl 1:150)
  35.     (command "-style" EC-22-150 "" "" "" "" "" "" "")
  36.      (command "-dimstyle" "save" EC-150))
  37.   (t (coldim)))
  38. (setq doc (cond (doc) ((vla-get-ActiveDocument
  39.                           (vlax-get-Acad-Object))))
  40.        spc (if (zerop (vla-get-activespace doc))
  41.              (if (= (vla-get-mspace doc) :vlax-true)
  42.                (vla-get-modelspace doc)
  43.                (vla-get-paperspace doc))
  44.              (vla-get-modelspace doc)))
  45. (while (and (setq p1 (getpoint "\nPick Axes Crossing Point: "))
  46.              (setq p2 (getpoint "\nPick Corner Point: ")))
  47.      (setq uFlag (not (vla-StartUndoMark doc)))
  48.      (apply (function vla-AddDimRotated)
  49.             (append (list spc)
  50.                     (mapcar
  51.                       (function vlax-3D-point)
  52.                       (list (setq  p3 (list (car p1) (cadr p2) (caddr p1))) p2
  53.                             (polar p3 (angle p1 p3) (* DwgScl )))
  54.       '(0.)))
  55.    (apply (function vla-AddDimRotated)
  56.             (append (list spc)
  57.                     (mapcar
  58.                       (function vlax-3D-point)
  59.                       (list p2 (setq  p4 (list (car p2) (cadr p1) (caddr p1)))
  60.                                (polar p4 (angle p1 p4) (* DwgScl )))
  61.                     (list (/ pi 2.))))
  62.    (setq uFlag (vla-EndUndoMark doc))
  63.    ) ; while
  64. ; Restore OSmode
  65. (setq *error* TERR$)
  66. (setvar "osmode" OldOS)
  67. (setvar "dynmode" OldDynmode)
  68. (setvar "dynprompt" OldDynprompt)
  69. (princ "\nProgram completed and will now restore the user settings and exit.")
  70. )

 
这就是故事。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 12:20:13 | 显示全部楼层
 
姆萨苏尽可能清楚地表达了这一点。
 
(getkword)返回一个字符串,但在下一行中,您将在(rtos)函数中使用该变量,该函数需要一个实数。
 
如果您还没有,请帮自己一个忙,使用VLIDE编辑和调试代码。这样的错误很容易识别和纠正。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:24:23 | 显示全部楼层
  1. (initget 0 "20 25 50 100 150")
  2. (if (setq DwgScl (getkword "\nSpecify Drawing Scale [20/25/50/100/150]: 1:"))
  3. (progn
  4.    (command "_.-style" (strcat "EC-22-" DwgScl) "" "" "" "" "" "" "")
  5.    (if (> 3 (strlen DwgScl))
  6.      (command "_.-dimstyle" "_save" (strcat "EC-0" DwgScl))
  7.      (command "_.-dimstyle" "_save" (strcat "EC-" DwgScl)))))

 
这样的事情会不会让事情变得简单一点?
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 12:37:29 | 显示全部楼层
艾伦是的,比以前容易多了
 
我试着这么做,但我没有找到DXF dimstyle代码(或变量)来设置textstyle
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:40:22 | 显示全部楼层
也许是DIMTXSTY?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:26 , Processed in 0.423400 second(s), 70 queries .

© 2020-2025 乐筑天下

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