找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2674|回复: 22

[已解决] 本人菜鸟,最近刚做了个lisp程序,在编译时,出现错误,请给我指出错误

[复制链接]

已领礼包: 202个

财富等级: 日进斗金

发表于 2018-5-9 14:56:58 | 显示全部楼层 |阅读模式
悬赏50D豆已解决
本帖最后由 newer 于 2018-5-9 15:34 编辑

编译时,出现如下错误:
_$
参数类型错误: losid_subtype_p nil
_$
_$
_$
参数值错误: 非负: -1
_$

  1. 下面是源程序代码
  2. ;;;;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  3. (defun c:tt (/ a aaa b bidui-1 bd1 bd2 c d e_xt jisuan lst1 lst2 ss-p ss-x0 ss ss1 t1 t2 w-gouzao
  4.              w-jisuan w-jisuan-1 x y
  5.             )
  6.   (vl-load-com)
  7.   (setvar "CMDECHO" 0)
  8.   (setvar "osmode" 0)
  9.   (xdrx_begin)
  10.   (if (and (setq ss-p (xd::ssget "\n选取平面图(框选)<右键退出>:"
  11.                                  '(":L"
  12.                                    ((-4 . "<OR")
  13.                                     (-4 . "<AND")
  14.                                     (0 . "TEXT")
  15.                                     (1 . "*BZ*")
  16.                                     (-4 . "AND>")
  17.                                     (-4 . "<AND")
  18.                                     (0 . "*POLYLINE")
  19.                                     (8 . "S_EDGEMEMBERSHAPEDASH")
  20.                                     (-4 . "&=")
  21.                                     (70 . 1)
  22.                                     (-4 . "AND>")
  23.                                     (-4 . "OR>")
  24.                                    )
  25.                                   )
  26.                       )
  27.            )
  28.            ;;setq ss-p
  29.            (setq ss-x0 (xd::ssget "\n选取边缘构件详图(框选)<右键退出>:"
  30.                                   '(":L"
  31.                                     ((0 . "LWPOLYLINE")
  32.                                      (-4 . "<AND")
  33.                                      (8 . "0-详图闭合线框")
  34.                                      (62 . 6)
  35.                                      (-4 . "&=")
  36.                                      (70 . 1)
  37.                                      (-4 . "AND>")
  38.                                     )
  39.                                    )
  40.                        )
  41.            )
  42.            ;;setq ss-x0 为详图中(0 . "LWPOLYLINE")(8 . "0-详图闭合线框")(62 . 6)的复线框选择集
  43.       )
  44.     ;;and
  45.     (progn (setq t1 (getvar "date"))    ;记录开始时间t1
  46.            (setq ss  (XD::Pickset:GetSub ss-p '((0 . "TEXT") (1 . "*BZ*")))
  47. ;;;提取带“BZ”的文字,形成平面图的边缘构件编号选择集ss
  48.                  ss1 (XD::Pickset:GetSub
  49.                        ss-p
  50.                        '((0 . "*POLYLINE")
  51.                          (8 . "S_EDGEMEMBERSHAPEDASH")
  52.                          (-4 . "&=")
  53.                          (70 . 1)
  54.                         )
  55.                      )
  56. ;;;提取平面图中的闭合粗线框,形成平面图的粗线框选择集ss1
  57.            )
  58. ;;;setq
  59.            (setq jisuan (yqz::pickset:shiti ss1 ss))
  60. ;;;取得平面图中,(边缘构件复线框图元名、*BZ名称、计算配筋)一一对应表jisuan
  61.            (setq e-xt (yqz::pickset:xt ss-x0))
  62. ;;;直接生成详图表,(边缘构件图元名 边缘构件名称 实配钢筋面积 构造配筋面积)
  63.            (setq lst1 (mapcar '(lambda (x) (yqz::format (XD::Obj:DXF x 1)))
  64.                               ;;
  65.                               (xdrx_pickset->ents ss)
  66.                       )
  67. ;;;mapcar,形成平面图BZ名称表
  68.                  lst2 (mapcar '(lambda (x) (cadr x))
  69.                               ;;
  70.                               e-xt
  71.                       )
  72. ;;;mapcar ;;;形成详图Z名称表(包括KZ,Z,LZ等,否则可能与配筋不一一对应)
  73.            )
  74. ;;;setq
  75.            (if (setq aaa (yqz::list:dup lst2))
  76.              (progn (setq aaa (yqz::paixu aaa))
  77.                     (setq d (strcat "详图中存在重复详图的边缘构件:"
  78.                                     (XD::LIST->STRING aaa "、")
  79.                                     ",其计算配筋未与实配钢筋进行比对。"
  80.                             )
  81.                     )
  82.              )
  83. ;;;progn
  84.              (setq aaa '())
  85.            )
  86. ;;;if               
  87.            (setq bd1 (yqz::list:dup-1 lst1 lst2))
  88.            (setq bd2 (yqz::list:dup-1 lst2 lst1))
  89. ;;;将边缘构件顺序从小到大的顺序进行排序
  90.            (if (/= bd1 nil)
  91.              (setq bd1 (yqz::paixu bd1))
  92.            )
  93.            (if (/= bd2 nil)
  94.              (setq bd2 (yqz::paixu bd2))
  95.            )
  96.            (if (or (/= bd1 nil) (/= bd2 nil))
  97.              (progn (if (and (/= bd1 nil) (/= bd2 nil))
  98.                       (setq bidui-1 (strcat "平面图边缘构件"
  99.                                             (XD::LIST->STRING bd1 "、")
  100.                                             "无详图;详图边缘构件"
  101.                                             (XD::LIST->STRING bd2 "、")
  102.                                             "在平面图中未找到。"
  103.                                     )
  104.                       )
  105.                     )
  106. ;;;if
  107.                     (if (and (/= bd1 nil) (= bd2 nil))
  108.                       (setq bidui-1 (strcat "平面图边缘构件"
  109.                                             (XD::LIST->STRING bd1 "、")
  110.                                             "无详图。"
  111.                                     )
  112.                       )
  113.                     )
  114. ;;;if
  115.                     (if (and (= bd1 nil) (/= bd2 nil))
  116.                       (setq bidui-1 (strcat "详图边缘构件"
  117.                                             (XD::LIST->STRING bd2 "、")
  118.                                             "在平面图中未找到。"
  119.                                     )
  120.                       )
  121.                     )
  122. ;;;if
  123.              )
  124. ;;;progn
  125.              (setq bidui-1 '())
  126.            )
  127. ;;;if
  128. ;;;以下为对构造配筋的比对,测试正确
  129.            (setq w-gouzao (mapcar 'cadr
  130.                                   (vl-remove-if-not
  131.                                     '(lambda (x) (< (caddr x) (last x)))
  132. ;;;lambda(x)
  133.                                     e-xt
  134.                                   )
  135.                                   ;;vl-remove-if-not               
  136.                           )
  137. ;;;mapcar
  138.            )
  139. ;;;setq w-gouzao
  140. ;;;以下为对实配钢筋与计算配筋的比对
  141.            (setq
  142.              w-jisuan (vl-remove
  143.                         nil
  144.                         (mapcar '(lambda (x)
  145.                                    (vl-remove-if-not
  146.                                      '(lambda (y)
  147.                                         (if (and (not (member (cadr x) aaa)) (= (cadr x) (cadr y)))
  148.                                           (< (caddr x) (caddr y))
  149.                                           nil
  150.                                         )
  151. ;;;if
  152.                                       )
  153. ;;;lambda(y)
  154.                                      jisuan
  155.                                    )
  156. ;;;vl-remove-if        
  157.                                  )
  158. ;;;lambda(x)
  159.                                 e-xt
  160.                         )
  161. ;;;mapcar
  162.                       )
  163. ;;;vl-remove nil
  164.            )
  165. ;;;setq w-jisuan
  166.            (setq w-jisuan   (list-n w-jisuan)
  167.                  w-jisuan   (XD::List:GroupByNum w-jisuan 3)
  168.                  w-jisuan-1 (mapcar '(lambda (x) (cadr x)) w-jisuan)
  169. ;;;mapcar
  170.            )
  171. ;;;setq
  172. ;;;文字预处理
  173.            (if (/= bidui-1 nil)
  174.              (setq a bidui-1)
  175.            )
  176.            (if (/= w-gouzao nil)
  177.              (progn (setq w-gouzao (yqz::paixu w-gouzao))
  178.                     (setq b (strcat "详图中,边缘构件"
  179.                                     (XD::LIST->STRING w-gouzao "、")
  180.                                     "的实配钢筋面积小于构造配筋面积。"
  181.                             )
  182.                     )
  183.              )
  184. ;;;progn
  185.            )
  186. ;;;if
  187.            (if (/= w-jisuan-1 nil)
  188.              (progn (setq w-jisuan-1 (yqz::paixu w-jisuan-1))
  189.                     (setq c (strcat "平面图中,边缘构件"
  190.                                     (XD::LIST->STRING w-jisuan-1 "、")
  191.                                     "的实配钢筋面积小于计算配筋面积。(位置见平面图圆圈部分)"
  192.                             )
  193.                     )
  194.              )
  195. ;;;progn
  196.            )
  197. ;;;if
  198. ;;;最新、最快捷的文字标注方式,a b c d...为文字串,或nil
  199.            (if (not (equal (list a b c d) nil))
  200.              (progn (setq point1 (getpoint "选取文字插入点:"))
  201.                     (setq n 0)
  202.                     (mapcar '(lambda (x)
  203.                                (setq n (1+ n))
  204.                                (xdrx_text_make
  205.                                  (list (car point1) (- (cadr point1) (* (1- n) 700)))
  206.                                  (strcat (xdrx_prompt n t) "、" x)
  207.                                  "STANDARD"
  208.                                  400
  209.                                  (xdrx_vector_angle (getvar "wcsxdir"))
  210.                                )
  211.                              )
  212. ;;;lambda(x)
  213.                             (vl-remove nil (list a b c d))
  214.                     )
  215. ;;;mapcar
  216.                     (if (listp w-jisuan)
  217.                       (mapcar '(lambda (x)
  218.                                  (entmakex (list '(0 . "CIRCLE")
  219.                                                  (cons 10 (XD::Geom:Get9PT (car x) 4))
  220.                                                  '(40 . 800.0)
  221.                                                  '(62 . 1)
  222.                                            )
  223.                                  )
  224.                                )
  225. ;;;lambda(x)
  226.                               w-jisuan
  227.                       )
  228. ;;;mapcar
  229.                     )
  230. ;;;if
  231. ;;;(if (listp w-jisuan)
  232. ;;;(mapcar
  233. ;;;'(lambda(x)                                                        
  234. ;;;(entmakex (list '(0 . "CIRCLE")(cons 10 (XD::Geom:Get9PT (car x) 4)) '(40 . 800.0) '(62 . 1)))
  235. ;;;);;;lambda(x)
  236. ;;;w-jisuan
  237. ;;;);;;mapcar
  238. ;;;);;;if
  239.              )
  240. ;;;progn
  241.              (princ "\n比对结果均ok!")
  242.            )
  243.            ;;if
  244.     )
  245. ;;;progn
  246.   )
  247. ;;;if
  248.   (setq t2 (getvar "date"))             ;记录结束时间t2
  249.   (princ (menucmd (strcat "M=$(edtime,"
  250.                           (rtos (- t2 t1) 2 16)
  251.                           ",HH:MM:SS:MSEC)"
  252.                   )
  253.          )
  254.   )
  255. ;;;显示时间
  256.   (xdrx_end)
  257.   (setvar "CMDECHO" 1)
  258.   (setvar "osmode" 1)
  259.   (princ)
  260. )
  261. ;;;defun

  262. ;;;***********************************************************************


  263. ;;;以下为自定义函数

  264. (defun XD::Geom:Get9PT (e index / box)
  265.   (setq box (XD::Geom:9pt e))
  266.   (nth index box)
  267. )

  268. (defun yqz::paixu (lst / x1 x2)
  269. ;;;排序函数,用于结果中,BZ的排序
  270.   (vl-sort lst
  271.            '(lambda (x1 x2)
  272.               (< (atoi (xd::string:regexpr "[^0-9]" x1 "" ""))
  273.                  (atoi (xd::string:regexpr "[^0-9]" x2 "" ""))
  274.               )
  275.             )
  276. ;;;lambda
  277.   )
  278. ;;;vl-sort lst        
  279. )
  280. ;;;defun


  281. ;;;函数功能:用正则法则进行查找替换,去掉字符串中的*及()、()中的内容,括号内带有字母及数字时,有问题。
  282. (defun yqz::format (a)
  283.   (xd::string:regexpr "[^Y|GBZ\\-0-9]" a "" "")
  284. )
  285. ;;;defun

  286. (defun yqz::format1 (a) (xd::string:regexpr " " a "" ""))
  287. ;;;defun




  288. (defun yqz::list:dup (lst / e lst1)
  289.   (while (setq e (car lst))
  290.     (if (and (member e (setq lst (cdr lst))) (not (member e lst1)))
  291.       (setq lst1 (cons e lst1))
  292.     )
  293. ;;;if
  294.   )
  295. ;;;if
  296.   (reverse lst1)
  297. )
  298. ;;;defun

  299. (defun yqz::list:dup-1 (lst1 lst2 / e lst3)
  300. ;;;比对lst1是否均在lst2中
  301.   (while (setq e (car lst1))
  302.     (if (and (not (member e lst2)) (not (member e lst3)))
  303.       (setq lst3 (cons e lst3))
  304.     )
  305. ;;;if
  306.     (setq lst1 (cdr lst1))
  307.   )
  308. ;;;while
  309.   (reverse lst3)
  310. )
  311. ;;;defun

  312. ;;;以下函数适用于详图
  313. ;;;_________________________________________________________________________________________________________________
  314. (defun yqz::pickset:xt (ss / x a b c)
  315.   (mapcar '(lambda (x)
  316.              (setq a (yqz::format1
  317.                        (XD::Pickset:PolyFence2 x '((0 . "TEXT") (1 . "*BZ*")))
  318.                      )
  319.              )
  320.              (setq b (atoi (XD::Pickset:PolyFence2
  321.                              x
  322.                              '((0 . "TEXT") (8 . "0-实配钢筋面积"))
  323.                            )
  324.                      )
  325.              )
  326.              (setq c (atoi (XD::Pickset:PolyFence2
  327.                              x
  328.                              '((0 . "TEXT") (8 . "0-构造钢筋面积"))
  329.                            )
  330.                      )
  331.              )
  332.              (list x a b c)
  333.            )
  334. ;;;lambda(x)
  335.           (xdrx_pickset->ents ss)
  336.   )
  337. ;;;mapcar
  338. )
  339. ;;;defun


  340. (defun XD::Pickset:PolyFence2 (e fillter / pts pt1 pt3 ss1 name)
  341. ;;;e为边缘构件实体的图元名;fillter为条件,同ssget
  342.   (if (setq pts (xdrx_entity_box e))
  343. ;;;取得e实体的四点包围盒。
  344.     (progn (setq pt1 (offset-2 (car pts))
  345. ;;;将做左下角点往左偏移2700,往下偏移5400
  346.                  pt3 (caddr pts)
  347. ;;;取右上角点
  348.            )
  349. ;;;setq
  350.            (setq ss1 (ssget "w" pt1 pt3 fillter))
  351. ;;;选取满足条件的选择集,w选择
  352.            (setq name (XD::Obj:DXF (car (xdrx_pickset->ents ss1)) 1)) ;选择集转实体表,并取出名称。
  353.     )
  354. ;;;progn
  355.   )
  356. ;;;if
  357.   name
  358. )
  359. ;;;defun

  360. (defun offset-2 (pt)
  361. ;;;将点的x坐标左移2700,y坐标下移5400mm,适应于pkpm
  362.   (setq pt (subst (- (car pt) 2700) (car pt) pt)
  363.         pt (subst (- (cadr pt) 5400) (cadr pt) pt)
  364.   )
  365. ;;;setq
  366. )
  367. ;;;defun


  368. ;;;********************************************************************************************************************************
  369. ;;;以下函数的结果可能是表,也可能是nil。此函数仅对平面图中的构件其作用
  370. ;;;参数:ss-绿色边缘构件复线框选择集,ss-a 平面图中,边缘构件名称选择集
  371. ;;;返回结果:(边缘构件复线框图元名 边缘构件名称 计算配筋值)
  372. ;;;测试用时:0.299s
  373. (defun yqz::pickset:shiti (ss ss-a / x lst t1 t2)
  374. ;;;形成只有“计算配筋”项的表,格式:(边框图元名 引线图元名 计算配筋)
  375. ;;;不是计算配筋控制的,均去掉了,简化与详图实配钢筋的比对进程。
  376.   (vl-remove nil
  377.              (mapcar '(lambda (x)
  378.                         (setq lst (XD::Pickset:PolyFence1 x))
  379.                         (if (/= (caddr lst) nil)
  380.                           (list (car lst)
  381.                                 (yqz::format (yqz::format:aaa (cadr lst) ss-a))
  382.                                 (yqz::jisuanpeijin (caddr lst) (last lst))
  383.                           )
  384.                           nil
  385.                         )
  386.                         ;;if
  387.                       )
  388. ;;;lambda
  389.                      (xdrx_pickset->ents ss)
  390.              )
  391. ;;;mapcar
  392.   )
  393. ;;;vl-remove nil
  394. )
  395. ;;;defun


  396. (defun XD::Pickset:PolyFence1 (e / pts pt1 pt3 pts-1 ss1 ss2 ss3 ss-a)
  397. ;;;e为边缘构件实体的图元名;ss_BZ为边缘构件编号选择集
  398.   (xdrx_ucson)
  399.   (if (setq pts (xdrx_entity_box e))
  400. ;;;取得e实体的四点包围盒。
  401.     (progn (setq pt1 (cadr pts)
  402.                  pt3 (offset-1 (last pts))
  403. ;;;此点y坐标上提200mm
  404.            )
  405. ;;;setq
  406.            (setq pts-1 (xdrx_getsamplept e))
  407.            (setq ss1 (ssget "c"
  408.                             pt1
  409.                             pt3
  410.                             '((0 . "text") (62 . 2) (1 . "计算配筋*"))
  411.                      )
  412.            )
  413. ;;;计算配筋选择集
  414.            (setq ss2 (ssget "c"
  415.                             pt1
  416.                             pt3
  417.                             '((0 . "text") (62 . 7) (1 . "构造配筋*"))
  418.                      )
  419.            )
  420. ;;;构造配筋选择集
  421.            (setq ss3 (ssget "f"
  422.                             pts-1
  423.                             '((0 . "LINE") (67 . 0) (8 . "S_EDGEMEMBERTXT"))
  424.                      )
  425.            )
  426. ;;;f选择与边缘框相交的直线到选择集中
  427.            (setq ss-a (list e (car (xdrx_pickset->ents ss3)) ss1 ss2))
  428. ;;;形成表 (边缘构件边框图元名 斜直线图元名 计算配筋选择集名 构造配筋选择集名)
  429.     )
  430. ;;;progn
  431.   )
  432. ;;;if
  433.   (xdrx_ucsoff)
  434.   ss-a
  435. )
  436. ;;;defun

  437. (defun offset-1 (pt)
  438. ;;;将点的y坐标上提200mm,适应于pkpm
  439.   (setq pt (subst (+ (cadr pt) 200) (cadr pt) pt))
  440. )
  441. ;;;defun

  442. ;;;找到引线对应的边缘构件名称,并进行处理,如:括号、*等。
  443. (defun yqz::format:aaa (e ss-a)
  444.   (XD::Obj:DXF
  445.     (XD::Entity:NearByPnt1
  446.       ss-a
  447.       (xdrx_getpropertyvalue e "endpoint")
  448.     )
  449.     1
  450.   )
  451. )
  452. ;;;defun

  453. (defun XD::Obj:DXF (e a)
  454.   (if (listp e)
  455.     (cdr (assoc a (entget (car e))))
  456.     (cdr (assoc a (entget e)))
  457.   )
  458. )
  459. ;;;defun



  460. (defun yqz::jisuanpeijin (ss1 ss2 / a aa bb cc x y)
  461.   (if (not (equal ss1 nil))
  462. ;;;如果计算配筋选择集/=nil
  463.     (progn (setq aa (mapcar '(lambda (x)
  464.                                (XD::String:ToNum
  465.                                  (XD::String:MatchBetween (XD::Obj:DXF x 1) "计算配筋" "mm")
  466.                                )
  467.                              )
  468. ;;;lambda(x)
  469.                             (xdrx_pickset->ents ss1)
  470.                     )
  471. ;;;mapcar,取出计算配筋控制的值,表的格式
  472.            )
  473. ;;;setq
  474.            (if (not (equal ss2 nil))
  475. ;;;如果白色构造配筋/=nil
  476.              (setq bb (mapcar '(lambda (y)
  477.                                  (XD::String:ToNum
  478.                                    (XD::String:MatchBetween (XD::Obj:DXF y 1) "构造配筋" "mm")
  479.                                  )
  480.                                )
  481. ;;;lambda(y)
  482.                               (xdrx_pickset->ents ss2)
  483.                       )
  484. ;;;mapcar,取出构造配筋值表
  485.              )
  486. ;;;setq
  487.              (setq bb 0)
  488.            )
  489. ;;;if
  490.            (setq cc (list-n (list aa bb)))
  491. ;;;将aa、bb表合并为一个表,并且将表元素放置到第一层
  492.            (setq a (apply '+ cc))
  493. ;;;各元素的和        
  494.     )
  495. ;;;progn
  496.     (setq a nil)
  497.   )
  498. ;;;if
  499.   a
  500. )
  501. ;;dedun


  502. ;;;将表元素放置到第一层
  503. (defun list-n (lst / func st)
  504.   (defun func (lst)
  505.     (if (null x)
  506.       (setq st '())
  507.     )
  508.     (foreach x lst
  509.       (if (listp x)
  510.         (func x)
  511.         (setq st (cons x st))
  512.       )
  513.     )
  514.     (reverse st)
  515.   )
  516.   (func lst)
  517. )

  518. ;;;函数:XD::Entity:NearByPnt1;;;;暂时先这样,以后版本修改为所有点与选择集一一对应最近点
  519. (defun XD::Entity:NearByPnt1 (el2 pt / box dis el1 pt2 pnt pnt1 x1 x2 y)
  520.   (if (= (type el2) 'PICKSET)
  521.     (setq el2 (xdrx_pickset->ents el2)) ;选择集转实体表,(<图元名: 7ff676e05a60> <图元名: 7ff676e05a50> <图元名: 7ff676e05a30>)
  522.   )
  523.   ;;if
  524.   (setq el1 (mapcar '(lambda (y)
  525.                        (setq box (xdrx_entity_box y))
  526. ;;;求出四点包围盒的坐标表((6.49192e+006 -3.54352e+006 0.0) (6.49303e+006 -3.54352e+006 0.0) (6.49303e+006 -3.54314e+006 0.0) (6.49192e+006 -3.54314e+006 0.0))
  527. ;;;此处现在的顺序是正确的,左下角点,右下角点,右上角点,左上角点!!!
  528.                        (setq pnt  (car box)
  529. ;;;
  530.                              pnt1 (cadr box)
  531.                              pt2  (xdrx_line_nearpoint pnt pnt1 pt)
  532.                              dis  (distance pt pt2)
  533.                        )
  534. ;;;setq
  535.                        (list dis y)
  536.                      )
  537. ;;;lambda
  538.                     el2
  539.             )
  540. ;;;mapcar
  541.   )
  542. ;;;setq
  543.   (cadar (vl-sort el1
  544.                   '(lambda (x1 x2) (< (car x1) (car x2)))
  545. ;;;lambda
  546.          )
  547. ;;;vl-sort el1
  548.   )
  549. ;;;cadar
  550. )
  551. ;;;defun
  552. ;;;************************************************************************************************************************


                  
         




最佳答案

查看完整内容

首先,确定下PT1,PT2,FILLTER是否有值。 如果有,在当前显示下,自己手工用上面代码求下选择集,看是否有 C构建选择集最好用WP,给个矩形表去求选择集。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-9 14:56:59 | 显示全部楼层
dyjwyqz5221 发表于 2018-5-9 17:24
我测试了,就是 (setq ss1 (ssget "w" pt1 pt3 fillter))这里取不出值来。

首先,确定下PT1,PT2,FILLTER是否有值。
如果有,在当前显示下,自己手工用上面代码求下选择集,看是否有
C构建选择集最好用WP,给个矩形表去求选择集。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 15:19:17 | 显示全部楼层
这是测试的t3-cad文件、字体,测试过程中还发现一个问题:用zoom缩小后,程序可以运行,放大后,就出现:参数类型错误: lentityp nil

新建文件夹 (2).rar

721.48 KB, 下载次数: 1, 下载积分: D豆 -1 , 活跃度 1

点评

程序太长了,简单说下, 1、你程序做什么的。 2、你怎么编译的  详情 回复 发表于 2018-5-9 15:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-9 15:36:09 | 显示全部楼层
dyjwyqz5221 发表于 2018-5-9 15:19
这是测试的t3-cad文件、字体,测试过程中还发现一个问题:用zoom缩小后,程序可以运行,放大后,就出现:参 ...

程序太长了,简单说下,
1、你程序做什么的。

2、你怎么编译的

点评

而且,除了XDRX API和通用LISP函数库,还有很多如 yqz::pickset:shiti 这样的函数没给源码,程序执行不了。  详情 回复 发表于 2018-5-9 15:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-9 15:38:05 | 显示全部楼层
newer 发表于 2018-5-9 15:36
程序太长了,简单说下,
1、你程序做什么的。

而且,除了XDRX API和通用LISP函数库,还有很多如 yqz::pickset:shiti 这样的函数没给源码,程序执行不了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 15:48:55 | 显示全部楼层
自己构造的源码都在上面,主要功能是比对平面图的计算配筋与详图的实配钢筋、构造配筋进行比对,将结果标注在cad图上,并且将平面图中实配钢筋不足的构件用红色圆圈标志出来,还有个功能就是比对平面图与详图构件名称是否相对应。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 15:54:02 | 显示全部楼层
用这个程序编译的,打算编译成*.vlx文件。
PV@A[(1@F@Z0IB`J2E3[XY5.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 15:57:34 | 显示全部楼层
刚才测试了下,哪些自定义函数打包后编译没问题,问题出在主程序上,现在仅有一个错误了,“参数值错误: 非负: -1”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 15:58:41 | 显示全部楼层

刚才测试了下,那些自定义函数打包后编译没问题,问题出在主程序上,现在仅有一个错误了,“参数值错误: 非负: -1”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 16:10:11 | 显示全部楼层
缩放时,程序出问题是下面这个函数处,我用的是wcs坐标系,是否与这有关系???


(defun XD::Pickset:PolyFence2 ( e fillter / pts pt1 pt3 ss1 name );;;e为边缘构件实体的图元名;fillter为条件,同ssget
          (if (setq pts (xdrx_entity_box e));;;取得e实体的四点包围盒。
                    (progn
                        (setq pt1 (offset-2 (car pts));;;将做左下角点往左偏移2700,往下偏移5400
                                pt3 (caddr pts);;;取右上角点
                        );;;setq
                        (setq ss1 (ssget "w" pt1 pt3 fillter));;;选取满足条件的选择集,w选择
                            (setq name (XD::Obj:DXF (car (xdrx_pickset->ents ss1)) 1));选择集转实体表,并取出名称。
                    );;;progn
          );;;if
          name
);;;defun

(defun offset-2 ( pt );;;将点的x坐标左移2700,y坐标下移5400mm,适应于pkpm
        (setq pt (subst (- (car pt) 2700) (car pt) pt)
                pt (subst (- (cadr pt) 5400) (cadr pt) pt)
        );;;setq
);;;defun


点评

局部代码看不清楚,你说下要缩放什么,我看有什么合适的函数 点表偏移OFFSET函数可以用: xdrx_points_offset 曲线实体偏移可以用 xdrx_curve_offset  详情 回复 发表于 2018-5-9 16:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-9 16:23:40 | 显示全部楼层
dyjwyqz5221 发表于 2018-5-9 16:10
缩放时,程序出问题是下面这个函数处,我用的是wcs坐标系,是否与这有关系???

局部代码看不清楚,你说下要缩放什么,我看有什么合适的函数

点表偏移OFFSET函数可以用:
xdrx_points_offset

曲线实体偏移可以用
xdrx_curve_offset
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 17:03:35 | 显示全部楼层
这是我要实现的局部功能 %F[$JYA4(U4XEY0I[{]QT.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 17:05:37 | 显示全部楼层
不能四周都偏移,否则可能将其他构件的数据包括进来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 17:06:57 | 显示全部楼层
我说的缩放指屏幕缩放,屏幕放大时,程序就出问题了,缩小时很正常。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2018-5-9 17:09:06 | 显示全部楼层
XD::Pickset:PolyFence2函数是在开源函数库XD::Pickset:PolyFence的基础上修改的,我用的坐标系与wcs一致,所以就没有转换,转换坐标也一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-24 08:17 , Processed in 0.271358 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表