乐筑天下

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

[编程交流] 基本Lisp

[复制链接]

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:32:47 | 显示全部楼层 |阅读模式
大家好,
我正在编写我的第一个Lisp例程,这是非常基本的。
 
我的目标是拥有一个lisp,当用户定义的点被选中时,它将在某一层上绘制一个点,并在另一层上绘制z值。
 
我有点卡住了,如果有人能给我指出正确的方向,我可能需要一些关于我哪里出错的指导。
 
我在代码旁边加入了注释,以突出我认为自己在编程的内容!
 
提前感谢
 
低音符
廷列夫。lsp
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:37:42 | 显示全部楼层
  1. (defun C:tinlev (/ pt1 z)
  2. (setq pt1 (getpoint "\nSpecify point on tin: ")
  3.        z   (caddr pt1)
  4. )
  5. (entmake (list (cons 0 "point")(cons 8 "cross")(cons 10 pt1)))
  6. (entmake (list (cons 0 "text")(cons 1 (rtos z))(cons 8 "detail")(cons 10 pt1)(cons 40 0.4)))
  7. (princ)
  8. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:40:47 | 显示全部楼层
这是根据你的结构。。。。
  1. (defun C:tinlev (/ pt1 z)
  2.    (setq pt1 (getpoint "\nPick point on TIN....")
  3.       z  (caddr pt1)
  4.      )
  5.      (command "_.-layer" "_s" cross "" "")
  6.      (command "_.point" pt1 )
  7.      (command "_.-layer" "_s" "lev" "" "")
  8.      (command "_.text" "s" "DETAIL" "J" "MR" pt1 "0.4" "0" (rtos z 2 2 ))
  9. (princ)
  10. )

 
任何其他变化都可以问。
 
当做
 
塔瓦特
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:45:02 | 显示全部楼层
谢谢Dans Legs和Tharwat中尉。
我可以在更基于宏的编程Tharwat中看到逻辑。我将把宏函数与Lisp函数进行比较,找出每个cons括号的作用。
 
亲切的问候
低音符
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:47:21 | 显示全部楼层
 
请记住,在Lisp编程中不能像使用(dt)而不是(text)那样使用命令缩写
和(-la)而不是(-layer)。。。。。。等等。
 
祝你好运
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:51:17 | 显示全部楼层
  1. (defun C:tinlev (/ pt1 z)
  2. (setq pt1 (getpoint "\nSpecify point on tin: ")
  3.        z   (caddr pt1)
  4. )
  5. (entmake
  6.    (list
  7.      (cons 0 "point");;create a point
  8.      (cons 8 "cross");;set the layer
  9.      (cons 10 pt1);;set the insertion point
  10.    )
  11. );;set the insertion point
  12. (entmake
  13.    (list
  14.      (cons 0 "text");;create a text
  15.      (cons 1 (rtos z));;content's of text
  16.      (cons 8 "detail");;set the layer
  17.      (cons 10 pt1);;set the insertion point
  18.      (cons 40 0.4);;set the text height
  19.    )
  20. )
  21. (princ)
  22. )
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:52:45 | 显示全部楼层
谢谢Dan中尉的腿,
网络在工作中崩溃了,但我认为这是编码过程中发生的事情。我无法让AutocAD通过插入点零件识别lisp,但稍后将重试。
 
我确实设法让Lisp用于插入由定义的集合块。csv文件条目,因此所有内容都没有丢失!
廷列夫。txt文件
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:55:34 | 显示全部楼层
首先,丹中尉在第6号帖子中很好地解释了所有代码。因此,没有必要重新描述它们。
第二,你的文件中有两个偏执缺失。txt,再次查看。
  1.                                                                                         ;picklev.lsp. Monumental as this is Lownote's first LISP application.
  2. (DEFUN C:tinlev (/ pt1 z)                                                                        ;set local variables to be used ie.pt1
  3. (setq pt1 (getpoint "\nPick point on TIN:")                                                         ;set value for pt1 by asking user to define
  4. z (caddr pt1)                                                                                ;set value for variable 'z' is z coord of picked point
  5.             )                                                                                        ;close parenth and end define function
  6. (entmake (list (cons 0 "point")(cons 8 "cross")(cons 10 pt1)))                                         ;makes an point entity (not sure what the list is for), assigns it to layer cross and assigns value of variable z
  7.      
  8. (entmake (list (cons 0 "text"[color="red"])[/color] (cons 1 (rtos z))(cons 8 "lev"[color="red"])[/color] (cons 10 pt1)(cons 40 0.4)))         ;makes an text entity, gives it the value of z, assigns it to layer lev, (not sure on cons 10 or cons 40)
  9.        (princ)                                                                                 ; exits quietly
  10.        )                                                                                 ;closes last parenth
  11.    

 
当做
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:58:29 | 显示全部楼层
如果您想添加一个点,我认为最好更改或将Sys Var“pdmode”添加到代码中,以便能够
清楚地看到这一点。
 
当做
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:02:54 | 显示全部楼层
这里有一些更强大的功能:
 
  1. [b][color=BLACK]([/color][/b]defun c: tinelv [b][color=FUCHSIA]([/color][/b]/ pt1 z[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]setq pt1 [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nPick Point on TIN:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  4. [b][color=FUCHSIA]([/color][/b]setq z [b][color=NAVY]([/color][/b]caddr pt1[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"POINT"[/color][b][color=MAROON])[/color][/b]
  6.                 [b][color=MAROON]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b]
  7.                 [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"CROSS"[/color][b][color=MAROON])[/color][/b]
  8.                 [b][color=MAROON]([/color][/b]cons 10 [b][color=GREEN]([/color][/b]trans pt1 1 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  9.                 [b][color=MAROON]([/color][/b]cons 39 0.0[b][color=MAROON])[/color][/b]
  10.                 [b][color=MAROON]([/color][/b]cons 62 256[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=MAROON])[/color][/b]
  12.                 [b][color=MAROON]([/color][/b]cons 1 [b][color=GREEN]([/color][/b]rtos z 2 4[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  13.                 [b][color=MAROON]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b]
  14.                 [b][color=MAROON]([/color][/b]cons 7 [b][color=GREEN]([/color][/b]getvat [color=#2f4f4f]"TEXTSTYLE"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  15.                 [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
  16.                 [b][color=MAROON]([/color][/b]cons 10 pt1[b][color=MAROON])[/color][/b]
  17.                 [b][color=MAROON]([/color][/b]cons 11 pt1[b][color=MAROON])[/color][/b]
  18.                 [b][color=MAROON]([/color][/b]cons 39 0.0[b][color=MAROON])[/color][/b]
  19.                 [b][color=MAROON]([/color][/b]cons 40 [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  20.                 [b][color=MAROON]([/color][/b]cons 62 256[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  21. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
(initget)强制用户输入,否则它将在空输入上崩溃
点图元仅使用WCS点值。(trans)呼叫解决了这个问题
组6、39和62都默认为其当前系统变量状态,因此在调用(entmake)之前,清楚地调用其值或设置其系统变量是一个好习惯
 
与组7、8、40相同,但其设置更难配置。
 
基于任何文本的先验存在,对文本使用(命令)可能很棘手。如果dwg中没有现有文字图元,则需要额外输入1个(高度)
 
使用(命令)需要对层的当前状态进行一些错误检查。即,当层使用冻结或不存在时,不能将其设置为层。
 
 
看到有人试图创建宏,然后寻求帮助,而不是相反,这总是很好的
 
祝你好运-大卫
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 18:04 , Processed in 0.734439 second(s), 72 queries .

© 2020-2025 乐筑天下

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