乐筑天下

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

[编程交流] 坐标未正确更新

[复制链接]

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 14:14:32 | 显示全部楼层 |阅读模式
我几个月前从李·麦克那里得到了这段代码,除了一件事之外,它工作得很好。“PT2”Y坐标未正确填充属性。
有人能帮忙吗。
 
属性:

                               
登录/注册后可看大图

 
代码:
; 这用于更新ftg块中的PT1和PT2属性
;
(defun lcoord(/lEnt bEnt vEnt sPt ePt aEnt aEntLst)
(命令“pickbox”“8”)
(vl load com)
(如果(和)(setq)
(汽车
(entsel)
“\n选择行,然后选择片段块>”)
(成员(cdr(assoc 0(entget lEnt)))'(“LINE”“POLYLINE”“LWPOLYLINE”“SPLINE”“ARC”))
(setq bEnt(car(entsel“\n选择目标块>”))
(=(cdr(assoc 0(entget bEnt)))“插入”)
(=(cdr(assoc 66(entget bEnt)))1)
(程序
(setq vEnt(vlax ename->vla object lEnt)
sPt(vlax曲线getStartPoint vEnt)
ePt(vlax curve getEndPoint vEnt)
aEnt(entnext bEnt))
(while(/=“SEQEND”(cdr(assoc 0(setq aEntLst(entget aEnt 1070;)))))
(条件((=“PT1”(cdr(assoc 2 aEntLst)))
(setq aEntLst(subst(cons 1
(strcat(in2ft(汽车sPt))
; (chr 32)
","
; (chr 32)(in2ft(cadr sPt))(chr 32“,”
; (chr 32)(in2ft(caddr sPt)))
; (chr 32)
(in2ft(cadr ePt)))
(assoc 1 aEntLst)
aEntLst)
(entmod aEntLst)
((=“PT2”(cdr(assoc 2 aEntLst)))
(setq aEntLst(subst(cons 1
(strcat(in2ft(car ePt))
; (chr 32)
","
; (chr 32)(in2ft(cadr ePt))(chr 32“,”
; (chr 32)(in2ft(caddr ePt)))
; (chr 32)
(in2ft(cadr ePt)))
(assoc 1 aEntLst)
aEntLst)
(entmod aEntLst)))
(setq aEnt(entnext aEntЮЮ)Ю)
(命令“PICKBOX”“6”)
(普林斯)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:25:11 | 显示全部楼层
如果那是我的,那么我认为它已经被修改了。。。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:30:13 | 显示全部楼层
乍一看,为什么所有的分号?
  1. ; This is for updating PT1 and PT2 attributes in ftg block
  2. ;
  3. (defun lcoord (/ lEnt bEnt vEnt sPt ePt aEnt aEntLst)
  4. (command "pickbox" "8")
  5. (vl-load-com)
  6. (if (and (setq lEnt
  7. (car
  8. (entsel
  9. "\nSelect Line then Footage block > " )))
  10. (member (cdr (assoc 0 (entget lEnt))) '("LINE" "POLYLINE" "LWPOLYLINE" "SPLINE" "ARC"))
  11. (setq bEnt (car (entsel "\nSelect Destination Block > ")))
  12. (= (cdr (assoc 0 (entget bEnt))) "INSERT")
  13. (= (cdr (assoc 66 (entget bEnt))) 1))
  14. (progn
  15. (setq vEnt (vlax-ename->vla-object lEnt)
  16. sPt (vlax-curve-getStartPoint vEnt)
  17. ePt (vlax-curve-getEndPoint vEnt)
  18. aEnt (entnext bEnt))
  19. (while (/= "SEQEND" (cdr (assoc 0 (setq aEntLst (entget aEnt)))))
  20. (cond ((= "PT1" (cdr (assoc 2 aEntLst)))
  21. (setq aEntLst (subst (cons 1
  22. (strcat (in2ft (car sPt))
  23. [color=red]; (chr 32)[/color]
  24. ","
  25. [color=red]; (chr 32) (in2ft (cadr sPt)) (chr 32) ","[/color]
  26. [color=red]; (chr 32) (in2ft (caddr sPt))))[/color]
  27. [color=red]; (chr 32)[/color]
  28. (in2ft (cadr ePt))))
  29. (assoc 1 aEntLst)
  30. aEntLst))
  31. (entmod aEntLst))
  32. ((= "PT2" (cdr (assoc 2 aEntLst)))
  33. (setq aEntLst (subst (cons 1
  34. (strcat (in2ft (car ePt))
  35. [color=red]; (chr 32)[/color]
  36. ","
  37. [color=red]; (chr 32) (in2ft (cadr ePt)) (chr 32) ","[/color]
  38. [color=red]; (chr 32) (in2ft (caddr ePt))))[/color]
  39. [color=red]; (chr 32)[/color]
  40. (in2ft (cadr ePt))))
  41. (assoc 1 aEntLst)
  42. aEntLst))
  43. (entmod aEntLst)))
  44. (setq aEnt (entnext aEnt)))))
  45. (COMMAND "PICKBOX" "6")
  46. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:34:04 | 显示全部楼层
这只是我最初的编码秃鹰,不用担心。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:40:47 | 显示全部楼层
 
我不确定,因为我提到“第一眼”。
只是看起来很奇怪。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:43:00 | 显示全部楼层
试试这个Cabltv:
 
  1. (defun c:lcoord (/ ent blk Obj lObj ePt sPt)
  2. (vl-load-com)
  3. (defun *error* (msg)
  4.    (if oPk (setvar "PICKBOX" oPk))
  5.    (if (not
  6.          (wcmatch
  7.            (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  8.      (princ (strcat "\n<< Error: " msg " >>")))
  9.    (princ))
  10. (setq oPk (getvar "PICKBOX"))
  11. (setvar "PICKBOX"
  12. (while
  13.    (progn
  14.      (setq ent (car (entsel "\nSelect Line: ")))
  15.      (cond
  16.        ((and (eq 'ENAME (type ent))
  17.              (wcmatch (cdr (assoc 0 (entget ent))) "*LINE"))
  18.         (while
  19.           (progn
  20.             (setq blk (car (entsel "\nSelect Block: ")))
  21.             (cond
  22.               ((and (eq 'ENAME (type blk))
  23.                     (eq "AcDbBlockReference"
  24.                       (vla-get-ObjectName
  25.                         (setq Obj (vlax-ename->vla-object blk)))))
  26.                (if (not (eq :vlax-true (vla-get-HasAttributes Obj)))
  27.                  (princ "\n** Block is Not Attributed **")))
  28.               (t (princ "\n** Object is not a Block **"))))))
  29.        (t (princ "\n** Object is not a *Line **")))))
  30. (setq lObj (vlax-ename->vla-object ent)
  31.        sPt (vlax-curve-getStartPoint lObj)
  32.        ePt (vlax-curve-getEndPoint lObj))
  33. (foreach att (vlax-safearray->list
  34.                 (vlax-variant-value
  35.                   (vla-getAttributes Obj)))
  36.    (cond ((eq "PT1" (vla-get-tagString att))
  37.           (vla-put-TextString att
  38.             (strcat
  39.               (in2ft (car sPt)) (chr 44)
  40.               (in2ft (cadr sPt)) (chr 44)
  41.               (in2ft (caddr sPt)))))
  42.          ((eq "PT2" (vla-get-TagString att))
  43.           (vla-put-TextString att
  44.             (strcat
  45.               (in2ft (car ePt)) (chr 44)
  46.               (in2ft (cadr ePt)) (chr 44)
  47.               (in2ft (caddr ePt)))))))
  48. (setvar "PICKBOX" oPk)
  49. (princ))
  50.               
  51. (defun in2ft (num / ft in)
  52. (setq ft (fix (/ num 12.0))
  53.    in (rem num 12.0))
  54. (strcat (rtos ft 2 2) (chr 39) (chr 45)
  55.      (rtos in 2 2) (chr 34)))
  56.                   
  57.    

 
我认为原稿修改不正确。
回复

使用道具 举报

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 14:52:47 | 显示全部楼层
李几个月前为我创作了这个。我忘了我把那些部分注释掉了。现在我知道为什么了。
我刚刚删除了这些部分的分号,并尝试加载Lisp文件,收到了以下错误。。。
“命令:;错误:错误的参数类型:lentyp nil”。
 
如果我把分号放回,它就会加载而不会出错。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:55:35 | 显示全部楼层
你不能只删除分号-括号(方括号)将不正确。
回复

使用道具 举报

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 15:00:31 | 显示全部楼层
李,
我从1月29日回到了原始代码,并尝试了它,结果是一样的,但我当时没有注意到。
http://www.cadtutor.net/forum/showthread.php?t=31962&highlight=cabltv1
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:08:48 | 显示全部楼层
你试过我上面贴的Lisp程序吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:12 , Processed in 0.333969 second(s), 73 queries .

© 2020-2025 乐筑天下

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