乐筑天下

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

[编程交流] 在脚本中切片

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:32:33 | 显示全部楼层 |阅读模式
我不熟悉AutoCAD和Lisp。我试图使用Lisp作为脚本在AutoCAD中生成3d对象。我想做的是:
创建圆柱体作为对象的基础
把它切成几片
 
听起来很简单,但我一直有一些问题。我在下面包含了一些代码:
  1. (defun c:rb ()
  2.    (command "cylinder" "0.000000,0.000000,-4.000000" "1" "8")
  3.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.000000,1.000000,0.000000" "1.000000,-1.000000,0.000000" "0.000000,0.000000,0.000000")
  4.    (princ (getint "1"))
  5.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.923880,-2.031530,0.000000" "-0.076120,2.796897,0.000000" "0.000000,0.000000,0.000000")
  6.    (princ (getint "2"))
  7.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.707107,-0.292893,0.000000" "-0.292893,1.707107,0.000000" "0.000000,0.000000,0.000000")
  8.    (princ (getint "3"))
  9.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.382683,0.509666,0.000000" "-0.617317,1.338093,0.000000" "0.000000,0.000000,0.000000")
  10.    (princ (getint "4"))
  11.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.000000,1.000000,0.000000" "-1.000000,1.000000,0.000000" "0.000000,0.000000,0.000000")
  12.    (princ (getint "5"))
  13.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.617317,1.338093,0.000000" "-1.382683,0.509666,0.000000" "0.000000,0.000000,0.000000")
  14.    (princ (getint "6"))
  15.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.292893,1.707107,0.000000" "-1.707107,-0.292893,0.000000" "0.000000,0.000000,0.000000")
  16.    (princ (getint "7"))
  17.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.076120,2.796897,0.000000" "-1.923880,-2.031530,0.000000" "0.000000,0.000000,0.000000")
  18.    (princ (getint "8"))
  19.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "-1.000000,1.000000,0.000000" "-1.000000,-1.000000,0.000000" "0.000000,0.000000,0.000000")
  20.    (princ (getint "9"))
  21.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.076120,-2.796897,0.000000" "-1.923880,2.031530,0.000000" "0.000000,0.000000,0.000000")
  22.    (princ (getint "10"))
  23.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.292893,-1.707107,0.000000" "-1.707107,0.292893,0.000000" "0.000000,0.000000,0.000000")
  24.    (princ (getint "11"))
  25.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.617317,-1.338093,0.000000" "-1.382683,-0.509666,0.000000" "0.000000,0.000000,0.000000")
  26.    (princ (getint "12"))
  27.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.000000,-1.000000,0.000000" "-1.000000,-1.000000,0.000000" "0.000000,0.000000,0.000000")
  28.    (princ (getint "13"))
  29.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.382683,-0.509666,0.000000" "-0.617317,-1.338093,0.000000" "0.000000,0.000000,0.000000")
  30.    (princ (getint "14"))
  31.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.707107,0.292893,0.000000" "-0.292893,-1.707107,0.000000" "0.000000,0.000000,0.000000")
  32.    (princ (getint "15"))
  33.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.923880,2.031530,0.000000" "-0.076120,-2.796897,0.000000" "0.000000,0.000000,0.000000")
  34.    (princ (getint "16"))
  35.    (princ)
  36. )

 
这将在圆柱体上创建一个尖端,使其看起来像铅笔。但是,我可以背靠背地运行多次(删除每次运行之间的剩余对象),并得到不同的结果。例如,有时它会返回一个错误,如“点不应在切片平面上”-当您选择要保留的2个新对象中的哪一个时,描述该点。另一次,它将完成,但对象没有按我预期的方式切片。我觉得这很奇怪。我不熟悉lisp或autocad的细节,但我很难想象这样一个简单的程序会做错什么。
 
有什么建议吗?
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 22:59:14 | 显示全部楼层
是的,它创造了像铅笔一样的东西。。。它在我的上网本上运行良好,我只注释了我认为足够的行。。。您可以使用圆柱体和圆锥体实现几乎相同的效果,或者使用顶部有n边棱锥体的挤出n边多边形实现几乎相同的效果。。。
 
  1. (defun c:rb ()
  2.    (command "cylinder" "0.000000,0.000000,-4.000000" "1" "8")
  3.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.000000,1.000000,0.000000" "1.000000,-1.000000,0.000000" "0.000000,0.000000,0.000000")
  4.    ;(princ (getint "1"))
  5.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.923880,-2.031530,0.000000" "-0.076120,2.796897,0.000000" "0.000000,0.000000,0.000000")
  6.    ;(princ (getint "2"))
  7.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.707107,-0.292893,0.000000" "-0.292893,1.707107,0.000000" "0.000000,0.000000,0.000000")
  8.    ;(princ (getint "3"))
  9.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.382683,0.509666,0.000000" "-0.617317,1.338093,0.000000" "0.000000,0.000000,0.000000")
  10.    ;(princ (getint "4"))
  11.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.000000,1.000000,0.000000" "-1.000000,1.000000,0.000000" "0.000000,0.000000,0.000000")
  12.    ;(princ (getint "5"))
  13.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.617317,1.338093,0.000000" "-1.382683,0.509666,0.000000" "0.000000,0.000000,0.000000")
  14.    ;(princ (getint "6"))
  15.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.292893,1.707107,0.000000" "-1.707107,-0.292893,0.000000" "0.000000,0.000000,0.000000")
  16.    ;(princ (getint "7"))
  17.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.076120,2.796897,0.000000" "-1.923880,-2.031530,0.000000" "0.000000,0.000000,0.000000")
  18.    ;(princ (getint "8"))
  19.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "-1.000000,1.000000,0.000000" "-1.000000,-1.000000,0.000000" "0.000000,0.000000,0.000000")
  20.    ;(princ (getint "9"))
  21.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.076120,-2.796897,0.000000" "-1.923880,2.031530,0.000000" "0.000000,0.000000,0.000000")
  22.    ;(princ (getint "10"))
  23.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.292893,-1.707107,0.000000" "-1.707107,0.292893,0.000000" "0.000000,0.000000,0.000000")
  24.    ;(princ (getint "11"))
  25.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "0.617317,-1.338093,0.000000" "-1.382683,-0.509666,0.000000" "0.000000,0.000000,0.000000")
  26.    ;(princ (getint "12"))
  27.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.000000,-1.000000,0.000000" "-1.000000,-1.000000,0.000000" "0.000000,0.000000,0.000000")
  28.    ;(princ (getint "13"))
  29.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.382683,-0.509666,0.000000" "-0.617317,-1.338093,0.000000" "0.000000,0.000000,0.000000")
  30.    ;(princ (getint "14"))
  31.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.707107,0.292893,0.000000" "-0.292893,-1.707107,0.000000" "0.000000,0.000000,0.000000")
  32.    ;(princ (getint "15"))
  33.    (command "slice" "all" "" "3" "0.000000,0.000000,0.869287" "1.923880,2.031530,0.000000" "-0.076120,-2.796897,0.000000" "0.000000,0.000000,0.000000")
  34.    ;(princ (getint "16"))
  35.    (princ)
  36. )
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:15:38 | 显示全部楼层
谢谢你在你的电脑上测试。看来我的设置有问题。我认为我没有更改任何默认设置;可能是安装过程中出了问题。
回复

使用道具 举报

0

主题

7

帖子

7

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:23:45 | 显示全部楼层
在运行代码之前,您是否尝试过关闭对象捕捉?
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:43:50 | 显示全部楼层
我尝试关闭对象捕捉,代码运行良好。谢谢你这么想!当我放大时,脚本似乎仍然有问题;我必须能够在屏幕上看到整个圆柱体,否则它真的很慢,有时会出现问题。我认为这是由于fence命令(可能在离开屏幕时切换到相对坐标),但这不是什么大问题,因为我可以开始缩小。
 
再次感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:05 , Processed in 0.366051 second(s), 62 queries .

© 2020-2025 乐筑天下

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