乐筑天下

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

[编程交流] Can#039;无法找到原因错误

[复制链接]

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-5 18:30:37 | 显示全部楼层 |阅读模式
你好
 
我在startup suite内容中加载了这个lisp例程。
 
但如果我在绘图时不重新加载它,它会给我发送一到几个参数错误。
 
我什么都试过了,却找不出问题所在。
 
需要帮助,谢谢。
 
  1. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  2. ;¦¦¦                   CE PROGRAM EST CONÇU POUR DESSINER                    ¦¦¦;
  3. ;¦¦¦                      UNE BOITE AUTOUR D'UN MTEXT                        ¦¦¦;
  4. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  5. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  6. ;¦¦¦                   AUTEUR : CadFrank, Copyright ® 2012                   ¦¦¦;
  7. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  8. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  9. ;¦¦¦                   Ce sous-program défini les calques                    ¦¦¦;
  10. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  11. (defun NouveauCalque (/ lay)
  12. (if (not (tblsearch "LAYER" "-LU SYMBOLE"))
  13.    (progn
  14.      (command "_layer"           "_n"               "-LU SYMBOLE"
  15.        "_C"           "90"               "-LU SYMBOLE"
  16.        ""           ""
  17.       )
  18.    )
  19. )                                        ;if
  20. )                                        ; fin NouveauCalque
  21. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  22. ;¦¦¦                        Ce sous-program défini les                       ¦¦¦;
  23. ;¦¦¦                            parametres initial                           ¦¦¦;
  24. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  25. (defun Parametreinitial ()
  26. (setq retour (list
  27.                 (cons "osmode" (getvar 'osmode))
  28.                 (cons "clayer" (getvar 'clayer))
  29.               )
  30. )
  31. (setvar 'OSMODE 0)
  32.    
  33. retour ; la dernière expression est retournée par la fonction
  34. ); fin parametreinitial
  35. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  36. ;¦¦¦                        Ce sous-program remet les                        ¦¦¦;
  37. ;¦¦¦                            parametres initial                           ¦¦¦;
  38. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  39. (defun Parametrefin (retour)
  40. (foreach p retour
  41.    (setvar (car p) (cdr p))
  42. )
  43. );fin parametrefin
  44. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  45. ;¦¦¦                        Ce sous-program reproduit                        ¦¦¦;
  46. ;¦¦¦                                une ligne                                ¦¦¦;
  47. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  48. (defun _Line (pt1 pt2)
  49.    (entmakex (list '(0 . "LINE")
  50.                    '(8 . "-LU SYMBOLE")
  51.                    '(62 . 61)
  52.                    (cons 10 pt1)
  53.                    (cons 11 pt2)
  54.              )
  55.    )
  56. );fin
  57. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  58. ;¦¦¦                        Ce sous-program reproduit                        ¦¦¦;
  59. ;¦¦¦                              une polyligne                              ¦¦¦;
  60. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  61. (defun _Poly (po1 po2 po3 po4 w clr)
  62.    (entmakex (list '(0 . "LWPOLYLINE")
  63.                    '(100 . "AcDbEntity")
  64.                    '(100 . "AcDbPolyline")
  65.                    '(90 . 5)
  66.                    '(70 . 1)
  67.                    '(8 . "-LU SYMBOLE")
  68.                    (cons 10 po1)
  69.                    (cons 10 po2)
  70.                    (cons 10 po3)
  71.                    (cons 10 po4)
  72.                    (cons 62 clr)
  73.                    (cons 43 w)
  74.              )
  75.    )
  76. )
  77. ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
  78. ;¦¦¦                          PROGRAM PRINCIPAL                              ¦¦¦;
  79. ;¦¦¦ _______________________________________________________________________ ¦¦¦;
  80. (defun c:bca (/ Entt pt ho ve ang ht p1 p2 p3 p4 p5 p6 p7 p8)
  81. (vl-load-com)
  82. (setq init (Parametreinitial))
  83. (NouveauCalque)
  84.    (if (and
  85.     (not
  86.       (while
  87.         (progn (setvar 'errno 0)
  88.                (setq Entt
  89.                       (car (entsel "\n Sélectionner le MultiText désiré : "))
  90.                )
  91.                (cond
  92.                  ((= 7 (getvar 'errno))
  93.                   (princ "\nDésolé, aucun Mtext sélectionné.")
  94.                  )
  95.                  ((eq 'ename (type Entt))
  96.                   (if (not (eq (cdr (assoc 0 (entget Entt))) "MTEXT"))
  97.                     (princ "\nCeci n'est pas un Mtext.")
  98.                   )
  99.                  )
  100.                )
  101.         )
  102.       )
  103.     )
  104.             Entt
  105. )
  106.      (progn
  107.        (setq Entt (entget Entt))
  108. ;(command "Clayer"
  109.        (setq pt (cdr (assoc 10 Entt))
  110.       ho (cdr (assoc 42 Entt))
  111.       ve (cdr (assoc 43 Entt))
  112.       ang (cdr (assoc 50 Entt))
  113.       ht (cdr (assoc 40 Entt))
  114. )
  115.      
  116.        (setq p1 (polar (polar pt (+ ang pi) (* ht 0.65))
  117.                 (+ ang (/ pi 2.))
  118.                 (* ht 0.65)
  119.                 )
  120.              p3 (polar (setq p2 (polar p1 ang (+ (* (* ht 0.65) 2.) ho)))
  121.                        (+ ang (* pi 1.5))
  122.                        (+ (* (* ht 0.65) 2.) ve)
  123.                 )
  124.              p4 (polar p3 (+ ang pi) (+ (* (* ht 0.65) 2.) ho))
  125.              p5 (polar (polar p1 (+ ang pi) (* ht 0.65))
  126.                        (+ ang (/ pi 2.))
  127.                        (* ht 0.65)
  128.                      )
  129.              p6 (polar p5 ang (+ (* (* ht 0.65) 4.) ho))
  130.              p7 (polar p6 (+ ang (* pi 1.5)) (+ (* (* ht 0.65) 4.) ve))
  131.              p8 (polar p7 (+ ang pi) (+ (* (* ht 0.65) 4.) ho))
  132.         )
  133.      
  134.         (mapcar '_Line
  135.                 (list p5 p5 p6 p6 p7 p7 p8 p8)
  136.                 (list (polar p5 (+ ang (/ pi 2.)) ht)
  137.                       (polar p5 (+ ang pi) ht)
  138.                       (polar p6 (+ ang (/ pi 2.)) ht)
  139.                       (polar p6 ang ht)
  140.                       (polar p7 ang ht)
  141.                       (polar p7 (+ ang (* pi 1.5)) ht)
  142.                       (polar p8 (+ ang pi) ht)
  143.                       (polar p8 (+ ang (* pi 1.5)) ht)
  144.                  )
  145.             )
  146.             (_Poly p1 p2 p3 p4 (/ ht 2.) 256)
  147.             (_Poly p5 p6 p7 p8 0.0 61)
  148.           )
  149.       
  150.      );if
  151. (parametrefin init)
  152. (prompt "\nMtext selectionné ! ")
  153. (princ)
  154. );fin
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:40:26 | 显示全部楼层
你好
 
-由于您只有一个动作,因此不需要在层函数中使用progn函数。
-此外,您正在检索osmode和clayer的设置,并将其重置回来,这是不需要的,因为您正在使用entmake函数,并在其中添加了层名称,尽管您将osmode设置为0值。
 
编辑:三次测试代码后,没有出现错误。
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-5 18:45:30 | 显示全部楼层
嘿Tharwat,
 
谢谢你的回复。除非你把它放在启动套件中,否则代码不会给出错误。然后重新启动autoCad。
 
如果在autocad打开后加载例程,代码可以正常工作。
 
如果我不这样做,这两条折线就不会出现。
 
当做
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:50:27 | 显示全部楼层
我将例程添加到启动套件中,在这里效果很好。
 
建议,将子功能引入主程序,并将功能名称本地化,如下所示:
 
这些子函数中的一个子函数可能被另一个程序使用或具有相同名称,但具有另一种类型的参数或或多或少。
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-5 18:57:39 | 显示全部楼层
我试过了,它没有返回函数定义:_Poly
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:01:15 | 显示全部楼层
正如我在上一次重播中所说,您应该将子功能引入主程序。
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-5 19:07:25 | 显示全部楼层
没关系,我没读好,呵呵!!我把子程序_poly带了进去,现在它可以工作了!
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-5 19:17:04 | 显示全部楼层
非常感谢,我的同事都在生我的气呵呵!
 
干杯
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:18:39 | 显示全部楼层
 
 
现在他们应该对你满意了
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

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

铜币
270
发表于 2022-7-5 19:24:47 | 显示全部楼层
有希望地现在我可以了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:52 , Processed in 0.831801 second(s), 72 queries .

© 2020-2025 乐筑天下

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