乐筑天下

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

[编程交流] 威兹曼,你能帮我吗

[复制链接]

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 14:28:35 | 显示全部楼层 |阅读模式
就在我以为我正在为代码做最后的润色时,我现在有了一个缺陷,这让我发疯了!
我想我已经问过李了。也许威兹曼可以帮我,因为他给了我代码
为了排序圆形行(与Lee mac一起),Wizman进行了排序,但Lee mac在
正确的顺序,这就是我发现很难实现的,修改它以适应。
一条垂直线将几行圆分开。正如我所说的,我想要一份最终的清单
例如-FinalList=((1(5.0 5.0 5.0)(2(3.0 3.0)(3(8.0 8.0 8.0))
其中第1行有3个半径为5.0的圆,第2行有2个半径为3.0的圆等
 
我想要一个‘FinalList’在右边,一个‘FinalList’在左边。
目前我没有任何清单。
 
请帮帮我,我要疯了,努力工作!
非常感谢。
以下是我目前掌握的代码:
 
  1. (defun c:RowAreas (/ lent      ldat    ss      tcirc        subss
  2.            total     test    subss_lst clst        rad
  3.            flag      new_xxlst    listrowdia        finallist
  4.            subss_lst  Rad  areaobj cLst  jsx_ename  dxf_ent)
  5.    (vl-load-com)
  6. (if (and (setq lEnt (car (entsel "\nSelect Vertical Line: ")))
  7.           (eq "LINE" (cdadr (entget lEnt))))
  8.    (progn
  9.      (setq lDat (list (cdr (assoc 10 (entget lEnt)))
  10.                       (cdr (assoc 11 (entget lEnt)))))
  11.      (princ "\n\nLEFT:\n")
  12.      (repeat 2
  13.        (setq test 1)
  14.        (if (setq ss (ssget "_X" (list '(0 . "CIRCLE")(cons -4 (if flag ">=,*,*" "<=,*,*"))
  15.                             (cons 10
  16.                                                (append
  17.                                                  (list
  18.                                                    (apply
  19.                                                      (if flag 'max 'min)
  20.                                                      (mapcar 'car lDat)))
  21.                                                  '(0 0))))))
  22.          (while (not (zerop (sslength ss)))
  23.        (setq dxf_ent  (entget (setq jsx_ename (ssname ss 0))))
  24.            (setq tCirc (ssname ss 0))
  25.            (if (setq subSs (ssget "_X" (list (cons 0 "CIRCLE")
  26.                                              (cons -4 (if flag ">=,=,*" "<=,=,*"))
  27.                                              (cons 10
  28.                                                (append
  29.                                                  (list
  30.                                                    (apply
  31.                                                      (if flag 'max 'min)
  32.                                                      (mapcar 'car lDat)))
  33.                                                  (cddr (assoc 10 (entget tCirc))))))))
  34.              (progn
  35.                (setq total 0.0)
  36.        (foreach ent  (setq new_xxlst
  37.                  (mapcar 'cadr
  38.                      (ssnamex subSs)))
  39.          (setq areaobj (vla-get-area
  40.                          (vlax-ename->vla-object ent))
  41.                total   (+ total areaobj))
  42.      );foreach
  43.                (setq cLst
  44.                       (vl-sort
  45.                         (mapcar '(lambda (x) (cdr (assoc 10 (entget x)))) new_xxlst)
  46.                          '(lambda (x1 x2) (< (car x1) (car x2))));centrepoint
  47.                      Rad
  48.                       (vl-sort
  49.                         (mapcar '(lambda (x) (cdr (assoc 40 (entget x)))) new_xxlst)
  50.                          '(lambda (r1 r2) (> r1 r2))));radius
  51.        (setq ListRowDia (cons (append (list (caddr (assoc 10 (entget (car new_xxlst))))) Rad) ListRowDia))
  52.            (mapcar '(lambda (x) (ssdel x ss)) new_xxlst)
  53.        );progn
  54.          );if
  55.            (ssdel jsx_ename ss)
  56.        );while
  57.      
  58.    (foreach x (mapcar 'cdr (vl-sort ListRowDia '(lambda (x1 x2) (< (car x1) (car x2)))))
  59.      (setq test 1)
  60.        (setq FinalList (cons (list test x) FinalList) test (1+ test))
  61.    );foreach
  62.      );if
  63.       (and (not flag) (princ "\n\nRIGHT:\n"))
  64.        (setq flag T)
  65.    );repeat
  66.          );progn
  67.    (princ "\n<!> No Line Selected <!>")
  68.    );if-->for dividing line
  69. (princ (vl-princ-to-string FinalList))
  70.    (princ )
  71. );defun
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:44:03 | 显示全部楼层
请尝试:
 
  1. (defun c:RowAreas (/ lent      ldat    ss      tcirc        subss
  2.            total     test    subss_lst clst        rad
  3.            flag      new_xxlst    listrowdia        finallist
  4.            subss_lst  Rad  areaobj cLst  jsx_ename  dxf_ent)
  5.    (vl-load-com)
  6. (if (and (setq lEnt (car (entsel "\nSelect Vertical Line: ")))
  7.           (eq "LINE" (cdadr (entget lEnt))))
  8.    (progn
  9.      (setq lDat (list (cdr (assoc 10 (entget lEnt)))
  10.                       (cdr (assoc 11 (entget lEnt)))))
  11.      (princ "\n\nLEFT:\n")
  12.      (repeat 2
  13.        ;(SETQ TEST 1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  14.        (if (setq ss (ssget "_X" (list '(0 . "CIRCLE")(cons -4 (if flag ">=,*,*" "<=,*,*"))
  15.                             (cons 10
  16.                                                (append
  17.                                                  (list
  18.                                                    (apply
  19.                                                      (if flag 'max 'min)
  20.                                                      (mapcar 'car lDat)))
  21.                                                  '(0 0))))))
  22.     (PROGN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  23.          (while (not (zerop (sslength ss)))
  24.        (setq dxf_ent  (entget (setq jsx_ename (ssname ss 0))))
  25.            (setq tCirc (ssname ss 0))
  26.            (if (setq subSs (ssget "_X" (list (cons 0 "CIRCLE")
  27.                                              (cons -4 (if flag ">=,=,*" "<=,=,*"))
  28.                                              (cons 10
  29.                                                (append
  30.                                                  (list
  31.                                                    (apply
  32.                                                      (if flag 'max 'min)
  33.                                                      (mapcar 'car lDat)))
  34.                                                  (cddr (assoc 10 (entget tCirc))))))))
  35.              (progn
  36.                (setq total 0.0)
  37.        (foreach ent  (setq new_xxlst
  38.                  (mapcar 'cadr
  39.                      (ssnamex subSs)))
  40.          (setq areaobj (vla-get-area
  41.                          (vlax-ename->vla-object ent))
  42.                total   (+ total areaobj))
  43.      );foreach
  44.                (setq cLst
  45.                       (vl-sort
  46.                         (mapcar '(lambda (x) (cdr (assoc 10 (entget x)))) new_xxlst)
  47.                          '(lambda (x1 x2) (< (car x1) (car x2))));centrepoint
  48.                      Rad
  49.                       (vl-sort
  50.                         (mapcar '(lambda (x) (cdr (assoc 40 (entget x)))) new_xxlst)
  51.                          '(lambda (r1 r2) (> r1 r2))));radius
  52.        (setq ListRowDia (cons (append (list (caddr (assoc 10 (entget (car new_xxlst))))) Rad) ListRowDia))
  53.            (mapcar '(lambda (x) (ssdel x ss)) new_xxlst)
  54.        );progn
  55.          );if
  56.            (ssdel jsx_ename ss)
  57.        );while
  58.      (SETQ TEST 1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  59.    (foreach x (mapcar 'cdr (vl-sort ListRowDia '(lambda (x1 x2) (< (car x1) (car x2)))))
  60.      
  61.        (setq FinalList (cons (list test x) FinalList) test (1+ test))
  62.    );foreach
  63.   (PRINC (VL-PRINC-TO-STRING FINALLIST))(SETQ FINALLIST NIL LISTROWDIA NIL);;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  64.   );PROGN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  65.      );if
  66.       (and (not flag) (princ "\n\nRIGHT:\n"))
  67.        (setq flag T)
  68.    );repeat
  69.          );progn
  70.    (princ "\n<!> No Line Selected <!>")
  71.    );if-->for dividing line
  72.      (princ )
  73. );defun
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 14:49:57 | 显示全部楼层
嘿,谢谢Wizman!
我很高兴!:-)
还有一个问题,我怎么能在“while”之外打两盘呢-
一个在右边,一个在左边?
干杯S.F。
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:59:57 | 显示全部楼层
 
 
 
不客气,小鱼,我不确定我是否明白你的下一个问题,也许你只需要另一个变量来存储左右。
 
 
*编辑2
 
*删除了普林斯的错误评论*
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 15:08:41 | 显示全部楼层
是的,这就是我想问的-我如何为左集合和右集合生成一个变量?
如果我拿走普林斯,它会显示任何列表。。。。
 
 
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:16:25 | 显示全部楼层
抱歉搞糊涂了,你说得对,普林斯需要在场。
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:27:18 | 显示全部楼层
为全局变量LEFT和RIGHT添加红线…:-)
 
  1. ..............................................................
  2. );if
  3.            (ssdel jsx_ename ss)
  4.        );while
  5.      (SETQ TEST 1)
  6.    (foreach x (mapcar 'cdr (vl-sort ListRowDia '(lambda (x1 x2) (< (car x1) (car x2)))))
  7.      
  8.        (setq FinalList (cons (list test x) FinalList) test (1+ test))
  9.    );foreach
  10.   (PRINC (VL-PRINC-TO-STRING FINALLIST))
  11.          [color="Red"](SET (IF FLAG 'RIGHT 'LEFT) FINALLIST)[/color]
  12.          (SETQ FINALLIST NIL LISTROWDIA NIL)
  13.   )
  14.      );if
  15.       (and (not flag) (princ "\n\nRIGHT:\n"))
  16.        (setq flag T)
  17.    );repeat
  18.          );progn
  19.    (princ "\n<!> No Line Selected <!>")
  20.    );if-->for dividing line
  21.      (princ )
  22. );defun
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 15:29:54 | 显示全部楼层
谢谢你的时间,威兹曼-这正是我想要的。头痛消失了:-)
干杯小鱼
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:12 , Processed in 0.328468 second(s), 68 queries .

© 2020-2025 乐筑天下

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