乐筑天下

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

[编程交流] 简单绘图计数/总Rou

[复制链接]

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 16:14:48 | 显示全部楼层 |阅读模式
我从头开始写了一个小程序,效果非常好。我只是想和大家分享一下,看看是否有人会用不同的方式或更有效的方式写它,以及如何写?我完全自学成才,每天都在不断学习(我还有很多路要走)。我从论坛上获得了很多好的建议,但实际上从未正式学习过,所以如果你愿意的话,你可以解释一下自己吗。我总是愿意学习新东西。
 
基本上,我们每天都会画一页又一页的管道和容器。完成后,我们必须创建页面标签(即图1/5、图2/5等)有时我们有25页以上的页面,所以你可以看到复制、粘贴、编辑和修改是多么单调。
 
我知道Lee Macs-NumInc实用程序。我们之所以不使用它,是因为我们将其预设为某个前缀和后缀,因为我们总是对数据点重新编号。我想我可以复制一个副本,然后创建一个单独的命令。然而,我写了一个小的基本例程,我的团队喜欢它。这是直截了当的,切中要害。
 
  1. (DEFUN C:DWG()
  2. (SETQ COUNT (GETSTRING "\nHow many drawings do you have? "))
  3. (SETQ COUNTUP 1)
  4. (setq oldlayr (getvar "clayer"))
  5. (setq t_size 0.08)
  6. (REPEAT (ATOI COUNT)
  7.   (SETQ DWGOF (STRCAT "DWG " (TRIM (ITOA COUNTUP)) " OF " (TRIM COUNT)))
  8.   (setq point (getpoint "\nPick Text Placement: "))
  9.   (command "layer" "s" "text" "")
  10.   (command "._text" "L" point t_size "0" DWGOF)
  11.   (COMMAND "MOVE" "L" "" "0,0" "0,.05")
  12.   (SETQ COUNTUP (1+ COUNTUP))
  13. )
  14. (SETVAR "CLAYER" OLDLAYR)
  15. (PRINC))
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:22:42 | 显示全部楼层
 
这可能值得研究(快速修正):
 
  1. (defun C:DWG ([color=red] / count countup oldlayr t_size dwgof point[/color] ) ; [b] <<- ALWAYS LOCALISE YOUR VARIABLES UNLESS YOU KNOW WHAT YOU'RE DOING! [/b]
  2. [color=red](and[/color]
  3.    [color=red](progn (initget (+ 2 4))[/color] (setq count ([color=red]getint[/color] "\nHow many drawings do you have? <exit> ")) [color=red])[/color]
  4.    [color=red](if (not trim) (prompt "The "trim" subfunction is not defined.") T)[/color]
  5.    (setq countup 1)
  6.    (setq oldlayr (getvar "clayer"))
  7.    (setq t_size 0.08)
  8.    [color=red](progn[/color]
  9.      (repeat [color=red]count[/color]
  10.        (setq dwgof (strcat "DWG " (trim (itoa countup)) " OF " (trim [color=red](itoa[/color] count[color=red])[/color])))
  11.        [color=red](cond [/color]
  12.          ( (setq point (getpoint "\nPick Text Placement <next>: "))
  13.            (command "[color=red]._-[/color]layer" "s" "text" "")
  14.            (command "[color=red]._-[/color]text" "L" point t_size "0" DWGOF)
  15.            (command "[color=red]._-[/color]MOVE" "L" "" "0,0" "0,.05")
  16.            (setq countup (1+ countup))
  17.          )
  18.        [color=red]); cond [/color]
  19.      )
  20.      (setvar "clayer" oldlayr)
  21.    [color=red]); progn[/color]
  22. [color=red]); and[/color]
  23. (princ)
  24. )
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 16:24:28 | 显示全部楼层
李,我将尝试稍微修改一下你的代码(同时保留你所有的原始作者注释和版权),这样它会提示用户实际放置文本,而不是选择。大多数情况下,我们都是从头开始绘制,必须手动输入这些“DWG 1/10”。这就是为什么我设计了我的代码,以它的工作方式;允许用户指定他们想要放置“DWG 1/10”的位置,然后继续处理代码以输入它。如果你赢了我,我很乐意试一试!谢谢你所做的一切!上帝保佑每一个人!继续努力!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:28:52 | 显示全部楼层
 
如果你把我的代码输入到一个点以上,它会一次完成你所有的标签
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:34:16 | 显示全部楼层
罗恩很可爱的代码,但我的基本代码做我需要的。然而,您的代码可以消除用户甚至需要输入“张数”的情况。但是看看我的代码,它和你的有点不同。您可以在每个布局中将字符串设置为0,0。我的代码总是在模型空间中,提示用户指定图纸数量,然后提示用户放置文本(这不是自动的,因为有时我们的标题栏在左侧,有时在右侧)。
 
  1. (defun c:foo (/ _maketext r o n s ll)
  2. ;; Creates text "SHEET X OF X" on each paper space tab at 0,0,0
  3. ;; RJP - 06.28.2017
  4. (defun _maketext (space point string height width rotation layer)
  5.    (if        point
  6.      (entmakex        (list '(0 . "TEXT")
  7.               '(100 . "AcDbEntity")
  8.               (cons 8 layer)
  9.               (cons 410 space)
  10.               '(100 . "AcDbText")
  11.               (cons 10 (trans point 1 0))
  12.               (cons 40 height)
  13.               (cons 1 string)
  14.               (cons 50 rotation)
  15.               (cons 41 width)
  16.               '(72 . 1)
  17.               (cons 11 (trans point 1 0))
  18.               '(73 . 2)
  19.         )
  20.      )
  21.    )
  22. )
  23. (and (setq r (cdr (assoc -1 (dictsearch (namedobjdict) "acad_layout"))))
  24.       (setq o (itoa (length (setq ll (layoutlist)))))
  25.       (foreach        l ll
  26. (setq n (itoa (cdr (assoc 71 (dictsearch r l)))))
  27. (if (setq s (ssget "x" (list '(0 . "text") '(8 . "Sheet_Numbers") (cons 410 l))))
  28.    (entmod (subst (cons 1 (strcat "SHEET " n " OF " o))
  29.                   (assoc 1 (entget (ssname s 0)))
  30.                   (entget (ssname s 0))
  31.            )
  32.    )
  33.    (_maketext l '(0 0 0) (strcat "SHEET " n " OF " o) 0.125 1 0.0 "Sheet_Numbers")
  34. )
  35.       )
  36. )
  37. (princ)
  38. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:38:39 | 显示全部楼层
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:45:36 | 显示全部楼层
 
The whole enchilada
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 16:51:05 | 显示全部楼层
Yes. Wow. Of course. I'm full now. Thanks for dinner Lee.
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:52:38 | 显示全部楼层
No worries!
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 17:00:40 | 显示全部楼层
BIGALL, sorry I am just responding. I type up a response earlier but apparently it didn't submit. We are using layouts (Drawing1, Drawing2, etc..). The "DWG 1 OF ?" is plain text in model space right above our titleblocks. Thanks to everyone for the input! Forever grateful!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 16:53 , Processed in 0.570241 second(s), 72 queries .

© 2020-2025 乐筑天下

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