乐筑天下

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

[编程交流] 使用多边形创建wi

[复制链接]

11

主题

44

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 06:10:52 | 显示全部楼层 |阅读模式
嘿伙计们,
 
我正在编写一个代码,但我在获取分配给变量的DXF代码以及将变量用于多边形命令方面遇到了问题。
 
基本上,我尝试做的是创建一个多边形,它“跟踪”一个圆,这将帮助我使用wipeout命令。
 
  1. (defun c:test (/ obj)
  2. (setq obj (entsel"\nSelect Circle to Wipeout: "))
  3. (setq rad (assoc 40 obj))
  4. (setq cen (assoc 10 obj))
  5. (command
  6.    "_.polygon" 50 cen "C" rad
  7.    )
  8. )

 
我遇到了这个错误:
错误:错误的关联列表:(7ffffb05b50>(3241.76 1416.18 0.0))
 
感谢您的帮助
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:28:09 | 显示全部楼层
也许是这样的
 
  1. (defun c:test (/ obj rad cen)
  2. (setq obj (entget (car (entsel "\nSelect Circle to Wipeout: "))))
  3. (setq rad (cdr (assoc 40 obj)))
  4. (setq cen (cdr (assoc 10 obj)))
  5. (command "_.polygon" 50 cen "_C" rad)
  6. (princ)
  7. )

 
HTH公司
亨里克
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:32:39 | 显示全部楼层
这个程序可能会有所帮助。
回复

使用道具 举报

11

主题

44

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 06:44:56 | 显示全部楼层
 
嗨,Henrique,
 
非常感谢!这就是我要找的!
 
我现在正在为程序添加一些错误检查,当我试图在AutoCAD中测试它时,我遇到了另一个错误。
 
  1. (defun c:test (/ obj rad cen wipeout)
  2. ;;this lisp will create a wipeout for a circle when selected by the user
  3. (if (setq obj (entget (car(entsel"\nSelect Circle to Wipeout: "))))
  4.    (if (/= circle (cdr (assoc 0 obj)))
  5. (setq rad (cdr (assoc 40 obj)));;get radius from selection and set to "rad"
  6. (setq cen (cdr (assoc 10 obj)));;get center point from selection and set to "cen"
  7. (command
  8.    "_.polygon" 50 cen "_C" rad
  9.    )
  10. (setq poly (entlast));;set last entity to variable "poly"
  11. (command
  12.    "_.wipeout" "_p" poly "_Y"
  13.    )
  14. (setq wipeout (entlast));;set last entity to variable "wipeout"
  15. (command
  16.    "_.draworder" wipeout "" "_b";;put wipeout behind object
  17.    )
  18. (princ)
  19.      (ALERT "YOU DIDN'T SELECT A CIRCLE")
  20.      );;END 2ND IF
  21.    (ALERT "YOU DIDN'T SELECT AN OBJECT")
  22.    );;END 1ST IF
  23. )

 
我遇到了太多的参数错误
 
也许有人可以给我一些关于如何运行错误检查的见解。我最讨厌的一点是,当if运行nil值时,它仍然继续执行命令。我试着让它跳到结尾,或者重复到开头。
 
李:我一定会调查那个节目的。
 
谢谢
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:53:49 | 显示全部楼层
不客气!
 
尝试
 
  1. (defun c:test (/ CEN ESEL OBJ POLY RAD WIPEOUT)
  2. ;;this lisp will create a wipeout for a circle when selected by the user
  3. (if (setq esel (entsel "\nSelect Circle to Wipeout: "));; get entity name and picked point
  4.    (progn
  5.      (if (and (setq obj (entget (car esel)));; get entity data
  6.        (= "CIRCLE" (cdr (assoc 0 obj)));; test for "CIRCLE"
  7.   );; and
  8. (progn
  9.   (setq rad (cdr (assoc 40 obj)));;get radius from selection and set to "rad"
  10.   (setq cen (cdr (assoc 10 obj)));;get center point from selection and set to "cen"
  11.   (command "_.polygon" 50 cen "_C" rad)
  12.   (setq poly (entlast));;set last entity to variable "poly"
  13.   (command "_.wipeout" "_p" poly "_Y")
  14.   (setq wipeout (entlast));;set last entity to variable "wipeout"
  15.   (command "_.draworder" wipeout "" "_b");;put wipeout behind object
  16. );; progn
  17. (ALERT "YOU DIDN'T SELECT A CIRCLE")
  18.      );;END 2ND IF
  19.    );; progn
  20.    (ALERT "YOU DIDN'T SELECT AN OBJECT")
  21. );;END 1ST IF
  22. (princ)
  23. );; test

 
HTH公司
亨里克
回复

使用道具 举报

11

主题

44

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:07:08 | 显示全部楼层
谢谢这奏效了。
 
再次感谢你,亨里克。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:15:00 | 显示全部楼层
 
不客气,chiimayred
很高兴我能帮忙
 
亨里克
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:30 , Processed in 0.447960 second(s), 66 queries .

© 2020-2025 乐筑天下

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