乐筑天下

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

[编程交流] 错误:错误的参数类型:stri

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 10:05:07 | 显示全部楼层 |阅读模式
我有一段时间fixo为我写的Lisp程序。我一直在尝试在一个dcl,将要求土地所有者的名称和对开本编号,并设置这些层作为名称的一部分。
 
对话框闪烁,一秒钟后关闭。有人能帮忙吗?
 
  1. ;; local defun by CAB (Charles Alan Butler)
  2. (defun LayerMake_CPO (lyrname Color ltype)
  3. (if (tblsearch "LAYER" lyrname)
  4.    (command "._Layer" "_Thaw" lyrname "_On" lyrname "_UnLock" lyrname "_Set" lyrname "")
  5.    (command "._Layer" "_Make" lyrname "_Color"
  6.             (if (or (null color)(= Color "")) "_White" Color) lyrname
  7.             "LT" (if (or (null ltype)(= ltype "")) "Continuous" ltype) lyrname "")
  8. )
  9. )
  10. (defun C:CPO (/ *error* ang col clr coords dwo elist midp offsetted ofpt osm p1 p2 p3 pline a b c name folio)
  11. (setq dcl_id (load_dialog "cpo.dcl"))
  12.     (if (not (new_dialog "cpo" dcl_id))
  13. (exit)
  14.     );if
  15. (action_tile "name" (setq name $value))
  16. (action_tile "folio" (setq folio $value))
  17. ;(action_tile "accept" (val1))
  18. (start_dialog)
  19. (unload_dialog dcl_id)
  20. (setq a (strcat "CCC_CPO_"name"_"folio"_Grey_Hatch")
  21.        b (strcat "CCC_CPO_"name"_"folio"_Outline_Red")
  22.        c (strcat "CCC_CPO_"name"_"folio"_Outline_Black"))
  23. (defun *error* (msg)
  24. (if
  25.    (vl-position
  26.      msg
  27.      '("console break"
  28. "Function cancelled"
  29. "quit / exit abort"
  30. )
  31.      )
  32.     (princ "Error!")
  33.     (princ msg)
  34.     )
  35. (if osm (setvar "osmode" osm))
  36. (if clr (setvar "clayer" clr))
  37. (if col (setvar "cecolor" col))
  38. (if dwo (setvar "draworderctl" dwo))
  39. (command "._undo" "_END")
  40. )
  41. (setq osm (getvar "osmode"))  
  42. (setq col (getvar "cecolor"))
  43. (setq clr (getvar "clayer"))
  44. (setq dwo (getvar "draworderctl"))
  45. (command "._undo" "_BE")
  46. (setvar "osmode" 2593)
  47. (setvar "cecolor" "bylayer")
  48. (setvar "HPORIGINMODE" 5)
  49. (LayerMake_CPO a "254" "Continuous")
  50. (LayerMake_CPO b "1" "Continuous")
  51. (LayerMake_CPO c "7" "Continuous")
  52. (setvar "clayer" c)  
  53. (command "._pline")
  54. (while (= 1 (logand 1 (getvar "cmdactive")))
  55. (command pause))
  56. (setq pline (entlast)
  57. elist (entget pline)
  58. )
  59. (setq elist (entmod (subst (cons 70 1)(assoc 70 elist)elist)));<--close pline
  60. (entmod (subst (cons 43 0)(assoc 43 elist)elist));<--set line width to zero
  61. (setvar "draworderctl" 3)  
  62. (command "_.draworder" pline "" "_F");<--set pline's draw order to front  
  63. (setq coords (vl-remove-if (function not)
  64.   (mapcar (function (lambda (x)
  65.         (if (= 10 (car x))(cdr x))))
  66.    elist))
  67. )
  68. (setq p3 (caddr coords)
  69.      p1 (car coords)
  70.      ang (angle p1 p3)
  71.      ofpt (polar p3 ang 1.0)
  72.      )
  73. (setvar "clayer" "CCC_CPO_Replace with landwoner name_Outline_Red")
  74. (command "._offset" 0.5 pline ofpt "")
  75. (setq offsetted (entlast)
  76. elist (entget offsetted)
  77. )
  78. (if (assoc 62 elist)
  79. (setq elist (subst (cons 62 1)(assoc 62 elist) elist ))
  80. (setq elist (append elist (list '(62 . 1))))
  81. )
  82. (entmod elist)
  83. (command "._pedit" offsetted "_W" 1.0 "")
  84. (command "_.draworder" offsetted "" "_B");<--set pline's draw order to back  
  85. (setq coords (vl-remove-if (function not)
  86.   (mapcar (function (lambda (x)
  87.         (if (= 10 (car x))(cdr x))))
  88.    elist))
  89. )
  90. (setq p2 (car coords)
  91. midp (mapcar (function (lambda( a b)(/ (+ a b) 2)))
  92.       p1 p2)
  93. )
  94. (setvar "clayer" "CCC_CPO_Replace with landwoner name_Grey_Hatch")
  95. (setvar "hpname" "SOLID")
  96. (command "-hatch" "S" pline "" "")
  97. (setvar "hpname" ".")
  98. ;(Alert "Don't forget to change the landowner name & plot number LAYERS in the LAYER window!!!")
  99. (*error* nil)
  100. (princ)
  101. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:14:32 | 显示全部楼层
谢谢pBe。这很管用。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 10:20:20 | 显示全部楼层
我现在正在工作。我做了一些额外的改变。我在lisp中添加了一个mleader扩展,以便在闭合pline完成时启动一个mleader来标记地块。它确实可以工作,但当pline完成时,我在命令行中看到以下内容:
命令:nil
输入无效。
然后我右键单击,它继续并创建mleader。有人知道为什么会这样吗?
 
另一件事是,代码中有一个部分,如果偏移绘制的线,并创建一个选择集,其中最后一个创建的东西,但它不会像应该的那样将其传输到层b。我尝试了一些解决方案,但一直被卡住。
 
有人能帮忙吗?
谢谢
  1. cpo: dialog
  2. {label = "CPO Layer Creation";
  3. : edit_box
  4.             {
  5. label = "Enter landowner name :";
  6. key = "name";
  7. alignment = centered;
  8. edit_limit = 30;
  9. edit_width = 30;
  10. }
  11. : edit_box
  12. {
  13. label = "Enter folio number :";
  14. key = "folio";
  15. alignment = centered;
  16. edit_limit = 10;
  17. edit_width = 30;
  18. }
  19. : button
  20. {
  21. key = "accept";
  22. label = "OK";
  23. is_default = true;
  24. fixed_width = true;
  25. alignment = centered;
  26. }
  27. : errtile
  28. {
  29. width = 34;
  30. }
  31. }
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 10:25:09 | 显示全部楼层
 
 
我知道。。。。这就是你看到的零信息的原因
 
编辑:伍德曼的消息
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:28:53 | 显示全部楼层
我意识到你的帖子可能是针对Woodman的,我没有正确地查看或测试代码,但是这不会导致错误消息,因为首先,错误处理程序中没有任何内容会通过接受nil“msg”参数而出错。此外,如果错误处理程序抛出错误,您将收到“在*error*函数内发生错误…”我不认为是这样。
 
很抱歉插了我的鼻子,但我不想大惊小怪。。。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 10:35:13 | 显示全部楼层
 
不用担心,李
 
随时欢迎你的“鼻子”
 
 
你说得对。。但是对于这个特殊的代码,它确实。。因此,以不同的方式定义它将消除这一信息。。(我猜)
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:38:32 | 显示全部楼层
谢谢大家。pBe这真的很好。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:43:50 | 显示全部楼层
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:51:18 | 显示全部楼层
 
 
I know.... thats whats causing that nil message you're seeing
 
EDIT: Message for Woodman
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:55:48 | 显示全部楼层
I realise perhaps your post was directed at Woodman and I haven't properly looked at nor tested the code, however that could not cause the error message since firstly there is nothing in the error handler that could error by taking a nil 'msg' argument. Also, if the error handler was throwing the error you would receive 'An error occurred inside the *error* function....' which I don't believe is the case.
 
Apologies for sticking my nose in, but didn't want a wild goose chase...
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 01:41 , Processed in 1.265624 second(s), 72 queries .

© 2020-2025 乐筑天下

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