乐筑天下

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

[编程交流] 使用列表设置变量

[复制链接]

4

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 07:39:38 | 显示全部楼层 |阅读模式
您好,我正在学习Autolisp,并试图创建一个简单的程序,但遇到了以下问题。我试图绘制一条用户定义长度的线,因此希望创建一个变量,允许用户输入线的长度。
 
当我试图给“p1”赋值时,没有引号,它会说“错误:坏函数:”如果我把引号放进去(如下所示),它会使第一个条目字面上是字符串“Length”,而不是可变长度的值。我想用用户输入的值分配p1的第一个条目,因此如果在长度中输入“1000”,p1将显示为“1000,0”,因此我可以将其用作Line命令的坐标。
 
  1. (defun C:Line (/ Length p1)
  2. (setq Length (getint "Enter Length of Line: "))
  3. (setq p1 (list '(Length 0)))
  4. (princ p1)
  5. (princ)
  6. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:09:50 | 显示全部楼层
这是因为使用了quote而不是LIST函数来计算列表,因为该列表包含一个变量。
  1. (defun C:[color=red]LineX[/color] ( / [color=red]theLength[/color] p1)
  2. (setq [color=red]theLength[/color] (getint "Enter Length of Line: "))
  3. (setq p1 (list ([color=red]list[/color] [color=red]theLength[/color] 0)))
  4. (princ p1)
  5. (princ)
  6. )

此外,在为变量/函数指定名称时,请特别注意,并避免使用保留名称!
在代码中,您将重新定义内置的行命令,并替换长度函数。这可能会产生严重错误。我已经重命名了上面例子中的那些。
 
然而,要获得如您所说的字符串,您需要使用STRCAT函数;注意只接受字符串作为参数,所以用户的输入应该被转换。
  1. (defun C:LineX ( / theLength p1 )
  2. (setq theLength (getint "Enter Length of Line: "))
  3. (setq p1 [color=red](strcat (itoa theLength) ",0")[/color])
  4. (princ p1)
  5. (princ)
  6. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:47:42 | 显示全部楼层
我重写了你的例行公事:
  1. (defun C:LineX( / theLength pointStart pointEnd )
  2. (if (and (setq pointStart (getpoint "\nStarting point: "))
  3.          (setq theLength  (getint "\nEnter Length of Line: ")))
  4. (progn
  5.   (setq pointEnd (polar pointStart 0.0 theLength))
  6.   (command "_.LINE" "_non" pointStart "_non" pointEnd "")
  7. )
  8. )
  9. (princ)
  10. )

如果要调整直线的角度,应在帮助中检查极轴函数。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:10 , Processed in 0.577626 second(s), 58 queries .

© 2020-2025 乐筑天下

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