乐筑天下

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

[编程交流] 微调误差

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:14:21 | 显示全部楼层 |阅读模式
大家好,
 
我创建了一个LISP,根据用户输入将各种块插入到图形中。
 
插入块后,需要修剪它们所在的线,使其不会与块本身重叠。
 
所有的块都有6个单位宽,因此我编写了LISP程序来创建一个圆,临时删除块,并修剪圆内的线。
 
然而,当CAD达到程序的这一阶段时,我不断收到返回的错误。
 
任何帮助都将不胜感激。
 
  1. (defun c:valv (/ *error* oldVars varLst oldos oldlay vchx ln1 pt1 valvno ln1ent ang1 block1 c1)
  2.    (defun *error*(msg)
  3.    (if oldVars
  4.        (mapcar 'setvar varLst  oldVars)
  5.    ); end if
  6.    (princ "\nError or Esc pressed... Exit Program. ")
  7.    (princ)
  8.    ); end of *error*
  9.        (setq varLst(list "CMDECHO" "OSMODE" "CLAYER" "DIMSCALE")
  10.          oldVars(mapcar 'getvar varLst)
  11.          ); end setq
  12.    (setvar "cmdecho" 0)
  13.    (setq oldos (getvar "osmode"))
  14.    (setq oldlay (getvar "clayer"))
  15.    (initget 1 "Ball Butterfly Diaphragm Gate Globe")
  16.    (setq vchx (getkword "\nSpecify Valve Type [bAll/BUtterfly/Diaphragm/GAte/GLobe]: "))
  17.    (while
  18.        (and
  19.            (/= (setq ln1 (car (entsel "\nSelect Line for Valve: "))) nil)
  20.            (/= (setq pt1 (getpoint "\nSelect Point for Valve: ")) nil)
  21.            (/= (setq valvno (getstring "\nType Valve Number: ")) "")
  22.        ) ; end and
  23.        (setq ln1ent (entget ln1))
  24.        (setq ang1
  25.            (angle
  26.                (cdr (assoc 10 ln1ent))
  27.                (cdr (assoc 11 ln1ent))
  28.            ) ; end angle
  29.        ) ; end setq
  30.        (setvar "clayer" "4")
  31.        (setvar "osmode" 0)
  32.        (cond
  33.            (
  34.                (= vchx "Gate")
  35.                (command "_.insert"
  36.                    "C:\\Users\\Lee Mac\\Documents\\Valves\\GATE VALVE.dwg"
  37.                    pt1
  38.                    ""
  39.                    ""
  40.                    (rtd ang1)
  41.                    valvno
  42.                ) ; end insert
  43.                (setq block1 (entlast))
  44.            ) ; end condition 1
  45.            (
  46.                (= vchx "Globe")
  47.                (command "_.insert"
  48.                    "C:\\Users\\Lee Mac\\Documents\\Valves\\GLOBE VALVE.dwg"
  49.                    pt1
  50.                    ""
  51.                    ""
  52.                    (rtd ang1)
  53.                    valvno
  54.                ) ; end insert
  55.                (setq block1 (entlast))
  56.            ) ; end condition 2
  57.            (
  58.                (= vchx "Ball")
  59.                (command "_.insert"
  60.                    "C:\\Users\\Lee Mac\\Documents\\Valves\\BALL VALVE.dwg"
  61.                    pt1
  62.                    ""
  63.                    ""
  64.                    (rtd ang1)
  65.                    valvno
  66.                ) ; end insert
  67.                (setq block1 (entlast))
  68.            ) ; end condition 3
  69.            (
  70.                (= vchx "Butterfly")
  71.                (command "_.insert"
  72.                    "C:\\Users\\Lee Mac\\Documents\\Valves\\BUTTERFLY VALVE.dwg"
  73.                    pt1
  74.                    ""
  75.                    ""
  76.                    (rtd ang1)
  77.                    valvno
  78.                ) ; end insert
  79.                (setq block1 (entlast))
  80.            ) ; end condition 4
  81.            (
  82.                (= vchx "Diaphragm")
  83.                (command "_.insert"
  84.                    "C:\\Users\\Lee Mac\\Documents\\Valves\\DIAPHRAGM VALVE.dwg"
  85.                    pt1
  86.                    ""
  87.                    ""
  88.                    (rtd ang1)
  89.                    valvno
  90.                ) ; end insert
  91.                (setq block1 (entlast))
  92.            ) ; end condition 5
  93.        ) ; end cond
  94. ;        ***TRIM***
  95.        (command "_circle"
  96.            pt1
  97.            "3"
  98.        ) ; end circle
  99.        (setq c1 (entlast))
  100.        (command "_zoom"
  101.            "W"
  102.            (polar
  103.                pt1
  104.                (/ (* 3 pi) 4)
  105.                (/ 3 4)
  106.            ) ; end polar
  107.            (polar
  108.                pt1
  109.                (/ (* 7 pi) 4)
  110.                (/ 3 4)
  111.            ) ; end polar
  112.        ) ; end zoom
  113.        (entdel block1)
  114.        (command "_trim"
  115.            c1 ""
  116.            l1 ""
  117.        ) ; end trim
  118.        (command "_zoom"
  119.            "P"
  120.        ) ; end zoom
  121.        (entdel block1)
  122.        (setvar "clayer" oldlay)
  123.        (setvar "osmode" oldos)
  124.    ) ; end while
  125.    (setvar "cmdecho" 1)
  126. ) ; end program
  127. (defun rtd (a)
  128.    (* 180.0 (/ a pi))
  129. ) ; end program

 
提前感谢,
 
李。
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 17:37:40 | 显示全部楼层
你可以试着在每个街区后面加一个区域。。无需修剪。。。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:39:43 | 显示全部楼层
也许是ln1?
 
  1. (command "_trim"
  2.            c1 ""
  3.            [color="Red"]ln1[/color] ""
  4.        ) ; end trim
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:54:29 | 显示全部楼层
阿斯米你是一个传奇
 
你似乎总能发现我愚蠢的错误
 
谢谢
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 18:04:09 | 显示全部楼层
早上好,李。如果认真的话,你受过很快的训练,但你应该正确地学习以调试你的程序。查看“帮助”>“其他资源”>“开发人员帮助”>“AutoLISP教程”>“使用Visual LISP调试工具”。此外,这是Devid M.Stain的Visual LISP Developer Bible(vla-,vlax-,vlr-),请阅读有关Visual LISP编辑器及其内部调试的部分。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 18:25:37 | 显示全部楼层
谢谢ASMI,我会调查的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-5-26 10:04 , Processed in 2.338536 second(s), 64 queries .

© 2020-2025 乐筑天下

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