乐筑天下

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

[编程交流] 非常健壮的lisp

[复制链接]

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:31:21 | 显示全部楼层 |阅读模式
我希望能在这里找到一些帮助。我被委以重任,要吃得饱饱的。
 
我需要一个lisp例程,将给我一个网格线和泡泡与麻木。很简单吧。
 
1.lisp启动时,最好询问它是单个实例还是多个实例。
2、如果是多个,则需要自动递增。
3、可以从最后输入的数字开始。
 
我发现了一个带有前缀但没有后缀的自动增量。但我不确定如何添加网格线和气泡。
 
(定义C:INN(/ch gap hg init initstr ip p1 p2 pref tb wd)
(setq bef(getstring“\n\t输入前缀或按Enter键,不输入:”)
(setq initstr(getstring“\n输入初始数字或按Enter键设置默认值:”)
(if(eq“”initstr)(setq initstr“0001”))
(setq pref“”)
(setq init(atoi initstr))
(if(等式“0”(substr initstr 1 1))
(程序
(while(eq“0”(setq ch(substr initstr 1 1)))
(setq pref(strcat pref ch))
(setq initstr(substr initstr 2ЮЮ)Ю)
(while(setq ip(getpoint“\n\t指定文本插入点(回车停止):”)
; entmake文本
(恩特梅克)
(列表
'(0.“文本”)
“(100.“AcDbEntity”)
'(100.“AcDbText”)
(cons 1(strcat bef pref(itoa init));一串
(cons 7“标准”);风格
(cons 8“0”);层
(cons 62 256);颜色
(cons 10 ip);插入点
(cons 11 ip);对齐点
(cons 40(getvar“dimtxt”);文字高度-随西装变化
(cons 41 1.0);文本宽度
(cons 50 0.0);1.5708-垂直,0.0-水平
(cons 51 0.0);斜角
'(71 . 0);对齐
'(72 . 1);对齐
'(73 . 2);对齐
)
)
(setq tb(文本框(entget(entlast)))
(setq间隙(/(getvar“dimtxt”)4)
p1(汽车tb)
p2(cadr tb)
hg(abs(-cadr p1)(cadr p2)))
wd(abs(-(汽车p1)(汽车p2)))
p1(列表(-car ip)(/wd 2)间隙)((cadr ip)(/hg 2)间隙))
p2(列表(+(汽车ip)(/wd 2)间隙)(+(cadr ip)(/hg 2)间隙))
)
; entmake框架
(恩特梅克)
(列表'(0。“LWPOLYLINE”)
“(100.“AcDbEntity”)
'(100.“AcDbPolyline”)
'(90 . 4);顶点数
'(70 . 1);关闭标志
(cons 8“0”);层
(cons 62 2);颜色(256-ByLayer)
(cons 10 p1)
(列表10(车辆p2)(cadr p1))
(cons 10 p2)
(列表10(车辆p1)(cadr p2))
(cons 43 0.0);多段线宽度
)
)
(setq init(1+init))
)
(prin1)
)
(提示“\n键入INN以执行…”)
(普林斯)
 
 
提前感谢
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 11:34:55 | 显示全部楼层
欢迎来到论坛。
 
如果发布带有所需网格线和编号的DWG,可能会出现这种情况。
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:39:26 | 显示全部楼层
张贴。我希望有帮助
123125ivczon7n15l7ob7u.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:44:10 | 显示全部楼层
我写的一个非常古老的Lisp程序-可能有一些用处
 
  1. ;    .: Nozzle & Equipment Tags :.
  2. ;
  3. ;        .: by Lee McDonnell :.
  4. (defun c:tktag2     (/ *error* dwgscal tagpt tagline linent linest    linend tagang cnt tcirc    tagcnt tagtxt tcirccent)
  5. (princ "\nInitialising...")
  6. (defun *error*  (msg)
  7.    (if    oldVars
  8.      (mapcar 'setvar varLst oldVars))
  9.    (if    (eq msg "")
  10.      (princ "\n<< Function Complete >>")
  11.      (princ (strcat "Error: " (strcase msg))))
  12.    (princ))
  13. (setq    varLst    (list "CMDECHO" "OSMODE" "CLAYER" "DIMSCALE")
  14.    oldVars    (mapcar 'getvar varLst))
  15. (setvar "cmdecho" 0)
  16. (if (not (tblsearch "LAYER" "TAGLINE"))
  17.    (command "-layer" "m" "TAGLINE" "c" "5" "TAGLINE" ""))
  18. (if (not (tblsearch "LAYER" "TEXT"))
  19.    (command "-layer" "m" "TEXT" "c" "2" "TEXT" ""))
  20. (initget 7)
  21. (if (setq dwgscal (getreal "\nType Drawing Scale: 1:"))
  22.    (progn
  23.      (setvar "clayer" "TAGLINE")
  24.      (while
  25.    (/= (setq tagpt (getpoint "\nSelect First Tag Point: ")) nil)
  26.     (prompt "\nSpecify Other Tag Points: ")
  27.     (command "_line" tagpt)
  28.     (while (> (getvar 'CmdActive) 0) (command pause))
  29.     (setq tagline (entlast)
  30.           linent  (entget tagline)
  31.           linest  (cdr (assoc 10 linent))
  32.           linend  (cdr (assoc 11 linent))
  33.           tagang  (angle linest linend)
  34.           cnt     1
  35.           tcirc   (* dwgscal 4.2))
  36.     (initget 7)
  37.     (if (setq tagcnt (getint "\nSpecify Number of Tags: "))
  38.       (progn
  39.         (while (and (<= cnt tagcnt)
  40.             (/= (setq tagtxt
  41.                    (getstring (strcat "\nType Text for Tag ["
  42.                               (rtos cnt 2 0)
  43.                               "]: ")))
  44.                 ""))
  45.           (setq tagtxt (strcase tagtxt))
  46.           (setvar "clayer" "TEXT")
  47.           (setq tcirccent (polar linend tagang (* (- (* cnt 2) 1) tcirc)))
  48.           (setvar "osmode" 0)
  49.           (command "_circle" tcirccent tcirc)
  50.           (entmake
  51.         (list '(0 . "TEXT")
  52.               '(8 . "TEXT")
  53.               (cons 10 tcirccent)
  54.               (cons 40 (* dwgscal 2.5))
  55.               (cons 1 tagtxt)
  56.               '(50 . 0.0)
  57.               '(7 . "STANDARD")
  58.               '(71 . 0)
  59.               '(72 . 1)
  60.               '(73 . 2)
  61.               (cons 11 tcirccent)))
  62.           (setq cnt    (1+ cnt)
  63.             tagtxt "")))))))
  64. (*error* "")
  65. (princ))

 
假设块最初在图形中。
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:46:03 | 显示全部楼层
我不知道你是怎么在池塘那边请人吃午饭的,但我最好弄清楚。
 
李,我试过了,几乎是定制的。我想我会使用这个精确的门和窗代码,尝试把promt改成那样。我们可以让它从存储位置加载dwg模板吗?这样,如果他们重新开始,我就不必预先加载积木,否则他们会被错误地清除掉。
 
至于网格泡沫。是否可以选择有/没有网格线。我们可以把气泡模糊因子设置得稍微不同一点吗?
 
我将发布我的网格气泡lisp,这样你可以看到我们一直在做什么。
Grdbub01.txt
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:50:24 | 显示全部楼层
嗨,吉姆,
 
很高兴它对你有用
 
我可以使用LISP从filepath块位置获取块的源代码-如果您喜欢的话?
 
至于网格线-这应该不是问题~我希望不要在LISP中包含太多的“选项”,因为它会增加“使用”时间,但如果需要,我可以根据需要合并这些选项。
 
你想要偏移量吗?如果是这样,您希望对该区块及其编号做些什么?
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:53:28 | 显示全部楼层
好的,当我在这里被鞭打的时候。
 
如果我们将其用于门牌,我们可以使其增量可以是数字或字母吗?
 
举个例子。我的房间面积是E234,有4个门。现在用lisp,我可以说前缀起始数字,然后没有后缀。当然,A行不通,因为它不是整数。
 
所以我会得到结果;
 
DE234A
DE234B
DE234C
DE234D
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:56:20 | 显示全部楼层
试穿这个尺码:
 
  1. (defun c:tagger (/ *error* vLst oVars ans pTxt sTxt cnt iPt drTag bubTag drTagLst bubTagLst)
  2. (defun *error* (msg)
  3.    (if oVars
  4.      (mapcar 'setvar vLst oVars))
  5.    (if (eq "" msg)
  6.      (princ "\n<< Function Complete >>")
  7.      (princ (strcat "Error: " (strcase msg))))
  8.    (princ))
  9. (setq vLst (list "OSMODE" "CLAYER" "ATTREQ" "BLIPMODE")
  10.    oVars (mapcar 'getvar vLst))
  11. (mapcar 'makelay '("A-DOOR-IDEN" "S-GRID-IDEN") '("5" "4"))
  12. (if (and (tblsearch "BLOCK" "Tagdoor1") (tblsearch "BLOCK" "Grdbub01"))
  13.    (progn
  14. (if (not TG:oans) (setq TG:oans "Door"))
  15. (initget "Door Bubble")
  16. (setq ans (getkword (strcat "\nSpecify Tag Type [Door/Bubble] <" TG:oans ">: ")))
  17. (if (not ans) (setq ans TG:oans) (setq TG:oans ans))
  18. (if (and (setq pTxt (getstring t "\nSpecify Prefix Text <Enter for no Prefix>:  "))
  19.       (not (initget 5))
  20.       (setq sNum (getint "\nSpecify Starting Number: ")
  21.         sTxt (getstring t "\nSpecify Suffix Text <Enter for no Suffix>:  ")))
  22.    (progn
  23.      (setq cnt 0)
  24.      (mapcar 'setvar vLst (list 0 "0" 0 0))
  25.      (while (setq iPt (getpoint "\nSelect Point for Symbol > "))
  26.    (cond ((= ans "Door")
  27.           (setvar "clayer" "A-DOOR-IDEN")
  28.           (command "-insert" "Tagdoor1" iPt "" "" "")
  29.           (setq drTag (entnext (entlast)))
  30.           (while (/= "SEQEND" (cdadr (setq drTagLst (entget drTag))))
  31.         (if (= "DR1NUM" (cdr (assoc 2 drTagLst)))
  32.           (entmod (subst (cons 1 (strcat pTxt (rtos (+ sNum cnt) 2 0) sTxt))
  33.                  (assoc 1 drTagLst) drTagLst)))
  34.         (setq drTag (entnext drTag)))
  35.           (command "_regenall"))
  36.          ((= ans "Bubble")
  37.           (setvar "clayer" "S-GRID-IDEN")
  38.           (command "-insert" "Grdbub01" iPt "" "" "")
  39.           (setq bubTag (entnext (entlast)))
  40.           (while (/= "SEQEND" (cdadr (setq bubTagLst (entget bubTag))))
  41.         (if (= "GRIDNUM" (cdr (assoc 2 bubTagLst)))
  42.           (entmod (subst (cons 1 (strcat pTxt (rtos (+ sNum cnt) 2 0) sTxt))
  43.                  (assoc 1 bubTagLst) bubTagLst)))
  44.         (setq bubTag (entnext bubTag)))
  45.           (command "_regenall")))
  46.    (setq cnt (1+ cnt))))))           
  47.    (princ "\n<!> One or More Blocks not Found <!>"))
  48. (*error* "")
  49. (princ))
  50. (defun makelay (x y)
  51. (if    (not (tblsearch "LAYER" x))
  52.    (command "-layer" "M" x "C" y x "")))

 
对于门标签,输入的数字将保持不变,并在后缀文本中输入一个字符作为“开始字符”。
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:59:46 | 显示全部楼层
线路选项是完美的。
 
我想我会尝试将其指向模板文件,而不是块。除非两个块都加载,否则它似乎不喜欢它。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:00:08 | 显示全部楼层
我可以将其指向块文件路径,或者将文件路径留空,供您填写
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:13 , Processed in 0.705182 second(s), 74 queries .

© 2020-2025 乐筑天下

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