乐筑天下

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

[编程交流] “坏argum”是什么意思

[复制链接]

6

主题

21

帖子

13

银币

初来乍到

Rank: 1

铜币
33
发表于 2022-7-6 10:55:35 | 显示全部楼层 |阅读模式
“错误参数类型:lentyp”的含义是什么如何消除这些错误?
 
当使用CONS(或LIST)函数和SUBST函数更改块的插入点及其属性的插入点时,我遇到了这个错误。奇怪的是,代码似乎正常工作,但似乎在最后一次出现ENTMOD函数时崩溃了。使用ENTUPD会导致错误显示在命令提示符下,程序立即终止。当不使用ENTUPD函数时,ENTMOD函数都是通过WHILE语句完成的,并且只有在重新生成后才会更改。
 
我简直不敢相信我花了几乎整个周末来解决这个问题。在这一点上,它正在成为一项使命,尽管我最好还是把头靠在墙上。
 
感谢您对解决此问题的任何帮助。非常感谢你的帮助。
射线
回复

使用道具 举报

0

主题

132

帖子

198

银币

限制会员

铜币
-21
发表于 2022-7-6 11:01:19 | 显示全部楼层
来自Autodesk主持人。。
 
 
LISP实体谓词。此消息表示当
应为实体名称。您可能正在拍摄列表的末尾,因此
在:
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 11:03:26 | 显示全部楼层
>光线1757
 
是的,它遗漏了实体。你能发布你的代码吗?我认为这是一个非常简单的错误。这是错误示例:
 
  1. Command: (entget Empty_Variable) ; variable Empty_Variable = nil
  2. ; error: bad argument type: lentityp nil

 
或类型不匹配
 
  1. Command: (entget 23) ; integer 23 instead ename
  2. ; error: bad argument type: lentityp 23
回复

使用道具 举报

6

主题

21

帖子

13

银币

初来乍到

Rank: 1

铜币
33
发表于 2022-7-6 11:06:43 | 显示全部楼层
谢谢你的回复。很抱歉,我花了这么多时间上传程序,因为我在发布之前对代码进行了大量的故障排除和清理。
 
我想我现在理解了这个错误的含义,但我不知道为什么会发生在这里。ENTUPD命令被注释掉,程序可以运行,但需要重新生成。这个ENTUPD函数似乎带来了“坏参数”问题。我不明白为什么会这样。ENTMOD函数接近尾声,只在“主程序”上方几行(附上示例图纸。)我感谢你在这个问题上的帮助。
 
我还需要解决另外两个问题。一个是块的递增,另一个是(vla startundomark adoc)函数。我想我可以解决随时间递增的问题。
 
谢谢你的帮助。
射线
 
  1. (defun C:FA ( / adoc)
  2. ;;;  (setq adoc  (vla-get-activedocument (vlax-get-acad-object)))
  3. ;;;  (vla-startundomark adoc)
  4. (defun get_acad_vars ()
  5. (setq osm-set (getvar "osmode"))
  6. (setq cmd-ech (getvar "cmdecho"))
  7. (setvar "cmdecho" 0)
  8. (setq lay-cur (getvar "clayer"))) ; END defun to get original settings to be restored
  9. (defun res_acad_vars ()
  10. (setvar  "osmode"    osm-set)
  11. (setvar  "clayer"    lay-cur)
  12. (setvar  "pickstyle" 1      )
  13. (command "wipeout" "f" "off")
  14. (setvar  "cmdecho"   cmd-ech))    ; END defun to restore original acad settings
  15. (defun init_vars ()
  16. (setq pick_ok 0)
  17. (if (= first_time nil)
  18.    (progn (princ "SELECT reference point BEFORE Continuing: ")
  19.           (setq ins_pnt (getpoint))
  20.           (setq pick_start ins_pnt)
  21.    (setq first_time 1))))   ; END progn & defun init_vars procedure
  22. (defun *error* (msg)
  23. (res_acad_vars)
  24. (princ msg)
  25. (princ))                            ; END defun *error*
  26. (defun rel_dist ()
  27.     (setq rel_x  72.0
  28.           rel_y1 0.0
  29.    rel_y2 16.0))            ;END defun relative_distances procedure
  30. (defun get_obj ()                   ; find new insertion point or pick block/mtext to move
  31. (setvar "osmode" 520)
  32. (initget 128 "Select")
  33. (setq ins_pnt (getpoint "\nPICK Block or Mtext or <S>elect new reference point: "))
  34. (cond
  35.     ((null ins_pnt)
  36.          (progn
  37.   (res_acad_vars)
  38.          (exit)))                  ;cond 1 - picked enter
  39.     ((listp ins_pnt)
  40.          (progn
  41.   (setq pick_object 1)
  42.   ))                        ;cond 2 - picked object
  43.     ((= ins_pnt "Select")
  44.          (progn
  45.   (setq pick_object 0)
  46.   (setq ins_pnt (getpoint))
  47.          (setq pick_start ins_pnt)
  48.   (setq first_time 1)))     ;cond 3 - select new ref point
  49. ))                                ;END cond function & defun in_pts
  50. (defun start_pnt ()
  51.   (setq new_x  (car  pick_start))
  52.   (setq new_y1 (cadr pick_start));<===========Problem here?
  53.   (setq new_y2 (- new_y1 rel_y2))) ;END defun start_pnt
  54. (defun  increment ()
  55. (setq new_x (+ new_x rel_x))
  56. (setq new_y (+ new_y1 rel_y1))
  57. (setq y2_val_n (+ new_y rel_y2))
  58. )
  59. (defun pick_obj ()
  60. (setq ss_obj (ssget ins_pnt))
  61. (setq ent (entget (ssname ss_obj 0)))  ;get the entire entity list
  62.    (cond ((= (cdr (cadr ent)) "INSERT")
  63.        (progn
  64.    (setq pick_ok 1)       ; found a BLock
  65.                  (setq list_num 10)
  66.    (increment)
  67.    (mov_ins_pnt)
  68.    (while(/= "SEQEND" (cdr (cadr ent)))
  69.        (setq list_num 11)
  70.                      (setq ent_nam (cdr (car ent)))
  71.                      (setq ent     (entget (entnext ent_nam)))
  72.               (mov_ins_pnt)
  73.                   )                     ;END while
  74.   )                       ;progn - found block
  75.           )                             ;condition 1
  76.    ((= (cdr (cadr ent)) "MTEXT")
  77.        (progn
  78.    (setq pick_ok 2)       ; found MText
  79.                  (setq list_num 10)
  80.    (increment)
  81.    (mov_ins_pnt)
  82.               ))                        ;END progn & condition 2
  83.     )                                   ;END cond
  84. );defun pick_obj
  85. (defun mov_ins_pnt ()                 ;move the insertion point
  86. (setq blck_pnt (assoc list_num ent));get the list of the block insertion point
  87. (setq old_x    (cadr  blck_pnt))    ;insertion point x value at start)
  88. (setq old_y    (caddr blck_pnt))    ;insertion point y value at start)
  89. (setq delta_x  (- new_x old_x))
  90. (setq delta_y  (- new_y old_y))
  91. (setq x1_val  (+ old_x delta_x))    ; for block/attributes
  92. (setq x2_val  (+ old_x delta_x))    ; for mtext
  93. (setq y1_val  (+ old_y delta_y))
  94. (setq y2_val  (+ old_y delta_y))
  95. (cond ((= pick_ok 1)(progn          ; for block/attributes
  96.                          (setq new_x x1_val)
  97.     (setq new_y new_y1)
  98.     (setq x1_val  (+ old_x delta_x))
  99.   ))
  100. ((= pick_ok 2)(progn          ; for mtext
  101.     (setq new_x x2_val)
  102.                   (setq new_y new_y2)
  103.                          (setq just1 (assoc 71 ent))
  104.                   (setq just2 (cons  71 2))
  105.                   (setq ent   (subst just2 just1  ent)));progn
  106. );cond pick_ok 2
  107. )      ;cond
  108. (setq ins_pnt  (list new_x  new_y  0.0))         ; new insertion point
  109. (setq mov_pnt  (cons list_num  ins_pnt))         ; new insertion point LIST
  110. (setq ent      (subst mov_pnt  blck_pnt  ent))
  111. (entmod ent)
  112. ;(ENTUPD ENT)    ;;;;;   <<<=========  BAD ARGUMENT PROBLEM HERE *****
  113. );defun move insertion point
  114. ;==============================
  115. ;        MAIN PROGRAM         
  116. ;==============================
  117. (init_vars)
  118. (get_acad_vars)
  119. (rel_dist)
  120. (get_obj)
  121. (start_pnt)
  122. (increment)
  123. (pick_obj)
  124. (res_acad_vars)
  125. ;;; (vla-endundomark adoc)
  126. (princ)
  127. ;==============================
  128. );END PROGRAM defun Command: FA

 
 
谢谢
埃里克
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 11:09:44 | 显示全部楼层
我的例程也有同样的问题,它会产生相同的错误消息:;错误:错误的参数类型:lentyp nil。它跳过IF每个子程序中的ENTSEL。
帮助
 
(定义c:hln(/LAS OS R1 R2 XNv XFv r2v Y1v X1v X2v P1v P2v xnh xfh r2h y1h x1h x2h p1h p2h)
(SETVAR“CMDECHO”0)
(SETQ LAS(GETVAR“CLAYER”))
(SETQ OS(GETVAR“OSMODE”))
(initget“V H”)
(setq direc(getkword“类型:垂直/水平”)
;需要从水平更改为垂直
;交换涉及所选线路的组件
;if语句应该控制这些组件的使用
;简单的方法是,如果V,则将组件更改为XNV和XNH,等等。
(命令“layer”s“hid”)
(setvar“osmode”512)
(如果(=“V”direc)
(
(SETQ R1(ENTSEL“拾取线:”))
(SETQ XNv(GETPOINT“拾取板底侧:”)(ERPI);在顶线上选择的点
(SETQ XFv(GETPOINT“拾取板的顶部侧面:”)(ERPI);在底线上选择的点
(setq R2v(entget(车辆R1)))
(setq Y1v(CADR(ASSOC 10 R2v));X坐标
(setq X1v(CADR XNv));底侧Y坐标
(setq X2v(CADR XFv));顶部Y坐标
(SETQ P1v(列表Y1v X1v))
(SETQ P2v(列表Y1v X2v))
(命令行p1v p2v/c/c)))
(如果(=“H”direc)
(
(SETQ R2(ENTSEL“拾取线:”))
(SETQ XNh(GETPOINT“拾取板的右侧:”)(ERPI)
(SETQ XFh(GETPOINT“拾取板的左侧:”)(ERPI)
(setq R2h(entget(car R2)))
(setq Y1h(CADDR(ASSOC 11 R2h));Y坐标
(setq X1h(CADR XNh));近边X坐标
(setq X2h(CAR XFh));远侧X坐标
(SETQ P1h(列表X2H Y1h))
(SETQ P2h(列表X1h Y1h))
(命令行p1h p2h/c/c)))
(命令“LAYER”S“LAS”)
(SETVAR“OSMODE”183)
(普林斯)
)
 
我要做的是在相邻视图中绘制一条隐藏线,只需在该线的另一个“可见”视图中选择该线。我想指定是垂直还是水平(我认为可能没有必要)来画线。但我无法选择任何一行。
回复

使用道具 举报

6

主题

21

帖子

13

银币

初来乍到

Rank: 1

铜币
33
发表于 2022-7-6 11:12:58 | 显示全部楼层
快速浏览一下,您会发现一些无效的IF语句。试试康德。
 
例如(未经测试,因为我不知道它做什么,也不想执行它)
 
  1. (defun c:redef_instruments ()
  2. (setvar "clayer" "sym")
  3. (setq lst_blk (ai_table "BLOCK" 0))
  4. (if lst_blk
  5. (progn
  6. (foreach str_blk lst_blk
  7. (setq file_blk
  8. (open (strcat (getvar "dwgprefix") "InstrumentMap.csv") "r")
  9. )
  10. (while (setq record (read-line file_blk))
  11. (setq str_name (nth 0 (strparse record ",")))
  12. (if
  13. (and
  14. (= (strcase str_name) (strcase str_blk))
  15. (> (length (strparse record ",")) 1)
  16. (/= (setq str_newname (nth 1 (strparse record ","))) "")
  17. )
  18. (progn
  19. (redefineinstruments str_name str_newname)
  20. )
  21. )
  22. )
  23. (close file_blk)
  24. )
  25. )
  26. )
  27. )
  28. (defun redefineinstruments (old new / blist
  29. attlst_old attlst_new
  30. val scx scy scz
  31. )
  32. (setq ss_old (ssget "x" (list '(0 . "INSERT") (cons 2 old))))
  33. (if ss_old
  34. (progn
  35. (setq blist
  36. (sel2lst ss_old)
  37. )
  38. (foreach nb blist
  39. (command "insert"
  40. (strcat new "=" (findfile (strcat new ".dwg")))
  41. (getval 10 nb)
  42. "XYZ"
  43. 1
  44. 1
  45. 1
  46. (rtod (getval 50 nb))
  47. )
  48. (setq attlst_old (att2lst nb))
  49. (setq attlst_new (att2lst (entlast)))
  50. (setval 1 (getval 1 (nth 0 attlst_old)) (nth 0 attlst_new))
  51. (setval 1 (getval 1 (nth 1 attlst_old)) (nth 1 attlst_new))
  52. (setval 1 (getval 1 (nth 2 attlst_old)) (nth 2 attlst_new))
  53. (setval 1 (getval 1 (nth 3 attlst_old)) (nth 3 attlst_new))
  54. (setval 1 (getval 1 (nth 4 attlst_old)) (nth 4 attlst_new))
  55. (setval 1 (getval 1 (nth 5 attlst_old)) (nth 5 attlst_new))
  56. (setval 1 (getval 1 (nth 6 attlst_old)) (nth 6 attlst_new))
  57. (setval 1 (getval 1 (nth 7 attlst_old)) (nth 7 attlst_new))
  58. (setval 1 (getval 1 (nth 8 attlst_old)) (nth 8 attlst_new))
  59. (setval 1 (getval 1 (nth 9 attlst_old)) (nth 9 attlst_new))
  60. (setval 1 (getval 1 (nth 10 attlst_old)) (nth 10 attlst_new))
  61. (setval 1 (getval 1 (nth 11 attlst_old)) (nth 11 attlst_new))
  62. (setval 1 (getval 1 (nth 12 attlst_old)) (nth 12 attlst_new))
  63. (entdel nb)
  64. )
  65. )
  66. )
  67. (entupd (entlast))
  68. )
回复

使用道具 举报

6

主题

21

帖子

13

银币

初来乍到

Rank: 1

铜币
33
发表于 2022-7-6 11:15:47 | 显示全部楼层
哦,是的,请注意:
http://www.cadtutor.net/forum/showthread.php?t=9184
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:20:04 | 显示全部楼层
好的,试过了。返回的列表格式不正确。括号错误。检查了他们。在“(Cond”语句中没有完全包含。在
(命令行p1h p2h/c/c)
)
))) ;就在这里
 
这起作用了,但它回来时
 
命令:(加载“hidlnn”)
; 错误:参数太多:(IF(=“V”DIREC)
 
那么,回到这一点上。。。。如果愿意,请帮助。
嘿,想要一份我用来创建这个的图纸(非常简单)的副本吗?
回复

使用道具 举报

3

主题

28

帖子

25

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:22:23 | 显示全部楼层
好吧,解决了这个问题。参数错误过多。
现在回到:;错误:错误的参数类型:lentyp nil
所以康德没有工作。仍然需要帮助。谢谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:25:48 | 显示全部楼层
代码如下:
 
  1. (defun c:hln (/ LAS OS R1 R2 XNv XFv r2v Y1v X1v X2v P1v P2v xnh xfh r2h y1h x1h x2h p1h p2h)
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ LAS (GETVAR "CLAYER"))
  4. (SETQ OS (GETVAR "OSMODE"))
  5. (initget "V H")
  6. (setq direc (getkword "Type: Vert/Horiz<current>"))
  7. ;need to change from horizontal to vertical
  8. ;swap involves components of chosen line
  9. ;if statement should control use of those components
  10. ;simple way, if V then change components to XNV versus XNH, etc.
  11. (command "layer" "s" "hid" "")
  12. (setvar "osmode" 512)
  13. (cond
  14.    ((= "V" direc)
  15.     (SETQ R1 (ENTSEL "Pick line: "))
  16.     (SETQ XNv (GETPOINT "Pick BOTTOM side of plate: "))
  17.     (terpri) ;point selected on top line
  18.     (SETQ XFv (GETPOINT "Pick TOP hside of plate: "))
  19.     (terpri) ;point selected on bottom line
  20.     (setq R2v (entget (car R1)))
  21.     (setq Y1v (CADR (ASSOC 10 R2v))) ;X COORDINATE
  22.     (setq X1v (CADR XNv)) ;BOTTOM SIDE Y COORDINATE
  23.     (setq X2v (CADR XFv)) ;TOP SIDE Y COORDINATE
  24.     (SETQ P1v (LIST Y1v X1v))
  25.     (SETQ P2v (LIST Y1v X2v))
  26.     (command "line" p1v p2v /c/c)
  27.    )
  28.    ((= "H" direc)
  29.     (SETQ R2 (ENTSEL "Pick line: "))
  30.     (SETQ XNh (GETPOINT "Pick RIGHT side of plate: "))
  31.     (terpri)
  32.     (SETQ XFh (GETPOINT "Pick LEFT side of plate: "))
  33.     (terpri)
  34.     (setq R2h (entget (car R2)))
  35.     (setq Y1h (CADDR (ASSOC 11 R2h))) ;Y COORDINATE
  36.     (setq X1h (CADR XNh)) ;NEAR SIDE X COORDINATE
  37.     (setq X2h (CAR XFh)) ;FAR SIDE X COORDINATE
  38.     (SETQ P1h (LIST X2H Y1h))
  39.     (SETQ P2h (LIST X1h Y1h))
  40.     (command "line" p1h p2h /c/c)
  41.    )
  42. )
  43. (COMMAND "LAYER" "S" LAS "")
  44. (SETVAR "OSMODE" 183)
  45. (PRINC)
  46. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:24 , Processed in 0.663045 second(s), 72 queries .

© 2020-2025 乐筑天下

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