乐筑天下

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

[编程交流] 自动距离

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 16:56:52 | 显示全部楼层
在发送到excel之前,只需将行数乘以所需数量即可
 
(rtos(距离
(rtos(*6.2(距离
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:01:36 | 显示全部楼层
谢谢,但这对我没什么帮助。我对lisp完全陌生,从来没有看过它们是如何工作的,也没有尝试过编写哪怕是最简单的例程。我应该把它放在哪里?谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:06:00 | 显示全部楼层
类似这样:
 
  1. (defun c:LST (/ name file ss ssi enl ln ar ci c2s)
  2. ;----------------------------
  3.    
  4.    (defun ln (l f) ;To record a LINE l in the file f
  5.    (write-line
  6.        (strcat "LINE,"
  7.            (c2s (cdr (assoc 10 l)))
  8.            (c2s (cdr (assoc 11 l)))
  9.           [b] [color=Red](rtos (* 6.2
  10.                 (distance[/color][/b]
  11.                 (cdr (assoc 10 l))
  12.                 (cdr (assoc 11 l))
  13.                 ) ;_  end distance
  14.              ) ;_  end *
  15.            ) ;_  end rtos
  16.        ) ;_  end strcat
  17.        f
  18.    ) ;_  end write-line
  19.    ) ;_  end defun
  20.    
  21. ;----------------------------
  22.    
  23.    (defun ar (l f / c r u1 u2) ;Record an ARC
  24.    (setq c     (cdr (assoc 10 l)) ;Center
  25.          r     (cdr (assoc 40 l)) ;Radius
  26.          u1 (cdr (assoc 50 l)) ;Start...
  27.          u2 (cdr (assoc 51 l)) ;...and End angle
  28.    ) ;_  end setq
  29.    (write-line
  30.        (strcat "ARC,"
  31.            (c2s (polar c u1 r))
  32.            (c2s (polar c u2 r))
  33.            (rtos (* r (abs (- u2 u1))))
  34.            ","
  35.            (c2s c)
  36.            (rtos r)
  37.        ) ;_  end strcat
  38.        f
  39.    ) ;_  end write-line
  40.    ) ;_  end defun
  41.    
  42. ;-----------------------------
  43.    
  44.    (defun ci (l f / r) ;To record a CIRCLE
  45.    (setq r (cdr (assoc 40 l))) ;Radius
  46.    (write-line
  47.        (strcat "CIRCLE,,,,,,,"
  48.            (rtos (* 2 PI r))
  49.            ","
  50.            (c2s (cdr (assoc 10 l)))
  51.            (rtos (cdr (assoc 40 l)))
  52.        ) ;_  end strcat
  53.        f
  54.    ) ;_  end write-line
  55.    ) ;_  end defun
  56.    
  57. ;----------------------------
  58.    
  59.    (defun c2s (x) ;Used to transform Coords in String
  60.    (strcat (rtos (car x)) "," (rtos (cadr x)) "," (rtos (caddr x)) ",")
  61.    ) ;_  end defun
  62. ;----------------------------
  63.    (setq name (getvar "dwgname"))
  64.    (if    (= "." (substr name (- (strlen name) 3) 1))
  65.    (setq name (substr name 1 (- (strlen name) 4)))
  66.    ) ;_  end if
  67.    (setq file (open (getfiled "Output file..." name "CSV" 1) "w")
  68.      ss   (ssget)
  69.      ssi  -1
  70.    ) ;_  end setq
  71.    (write-line
  72.    "Typ,Start X,Start Y,Start Z,End X,End Y,EndZ,Length,cen X,cen Y,cenZ,Radius"
  73.    file
  74.    ) ;_  end write-line
  75.    (if    ss
  76.    (progn
  77.        (repeat (sslength ss)
  78.        (setq enl (entget (ssname ss (setq ssi (1+ ssi)))))
  79.        (cond
  80.            ((= "LINE" (cdr (assoc 0 enl))) (ln enl file))
  81.            ((= "ARC" (cdr (assoc 0 enl))) (ar enl file))
  82.            ((= "CIRCLE" (cdr (assoc 0 enl))) (ci enl file))
  83.        ) ;_  end cond
  84.        ) ;_  end repeat
  85.    ) ;_  end progn
  86.    ) ;end IF SS
  87.    (close file)
  88.    (princ)
  89. ) ;_  end defun
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:08:17 | 显示全部楼层
非常感谢你的帮助李,我可以看到你会有点麻烦来帮助我,非常感谢。我尝试了上面的代码,但由于某种原因,它只做了与之前相同的事情,没有添加额外的单元格。知道为什么吗?无论如何,现在我们的公司已经发现我们可以做到这一点,我们想更进一步。如果你看到附件中的图片,我们最终想要做的是将三件事链接到excel电子表格。我们希望能够点击该行,并将其长度记录到excel中,但不仅如此,还要让它以某种方式意识到每一行都与一个气球和一个数字相关联。所以在excel电子表格中,我想看到:第100行-32.6m-4行,第101行-14.7m-4行,第102行-18.4m-5行。这可能吗?我无法将这3个项目设置为一个块(因为我们希望能够拉伸它等等),因此我不确定这是否太难(如果每次单击一行时我们不必输入数字,相反,代码会意识到它链接到了什么,这也会更容易)。任何帮助都将不胜感激。谢谢你堆
172507hvtrfcf3xxp9rofr.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:11:26 | 显示全部楼层
对不起,我没有把我之前的帖子说清楚——我只是偶然发现了最后一篇帖子,问如何将6.2因子结合起来,然后告诉你应该把它放在哪里。
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:14:08 | 显示全部楼层
啊,我真的不认为我的人要尝试Lisp程序,现在我得到了这个错误:;错误:输入列表格式不正确
 
我想我无论如何都可以推迟这一部分,看看我要求的最后一件事能否完成,这将为我们节省更多的时间。有人知道怎么做吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:18:39 | 显示全部楼层
输入中的列表格式不正确通常意味着只留下了右括号
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:18:58 | 显示全部楼层
似乎仍然无法让它工作。。。不管怎样,我想我会等一下,直到我知道是否有办法将这三件事联系在一起(就像我之前的一篇帖子中那样)。有人知道怎么做吗?谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:21:57 | 显示全部楼层
我认为用户必须选择所有三个项目,而不仅仅是ACAD的行,才能识别如何处理它们。
 
使用ssget函数,一旦用户选择了项目,就可以很容易地处理数据,但我看不出ACAD如何识别哪一行属于哪一个圆圈和文本。。等等等等
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:27:09 | 显示全部楼层
所以你不认为在autocad中有一种方法可以是块,而实际上不是块?我本以为我可以创建一个按钮,当被选中时,它会要求一行的开始,行的结束,气泡位置和气泡数。然后,一旦完成,它会识别出这三个东西是同时输入的,所以它们都是连接在一起的。因此,在某种程度上,它就像一个块,但显然我不能使它成为一个块,因为我需要能够延长/缩短线等。否则,如果情况变得更糟,我可能只会选择所有3个项目(线,气泡数,和气泡外的数字)。因此,如果代码可能类似于:“select first line”:(单击第一行)“enter number”(输入100)“enter bubble number”(输入4);“选择第二行”(单击第二行)“输入气泡号”(键入4),让代码意识到如果第一个数字是100,下一个数字将是101,然后是102等等,因此在第一行之后,我只需单击该行,然后键入气泡号。有人知道怎么做吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:25 , Processed in 0.641339 second(s), 83 queries .

© 2020-2025 乐筑天下

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