乐筑天下

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

[编程交流] 过滤输出用户输入

[复制链接]

5

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:23:38 | 显示全部楼层 |阅读模式
你好
 
我是论坛新手。我正在尝试制作一个程序,帮助我从autocad文件中编写g代码。我很快就学会了lisp,只需将不同的代码片段拼凑在一起,然后根据我的具体需要进行定制。我有一个功能有问题,我希望有人会知道答案。
 
我有代码告诉我这个对象是否是一个圆弧,但发现用户输入的不是一个对象(比如仅仅点击一个点),然后代码就搞糟了。有什么办法可以防止吗?我在考虑initget,但它只适用于get命令吗?
 
  1. (defun g79fun ( )
  2. (setq codeuse 1)
  3. (while(= codeuse 1)
  4. (setq ent (entsel "\nSelect the Arc: "))
  5. (setq lstent (entget (car ent)))
  6.    (initget + 1)
  7.      (if (= "ARC" (cdr (assoc 0 lstent)))(progn
  8.              (setq radius (cdr (assoc 10 lstent)))
  9.              (setq codeuse nil)
  10.                )(progn
  11.            (princ "\nNot an Arc or Circle. ")
  12.            (princ "idiot")
  13.            )
  14.    )
  15. )
  16. )

 
谢谢
布瑞恩
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 10:30:50 | 显示全部楼层
查看带有单个选择和过滤器的ssget函数
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:37:16 | 显示全部楼层
试试这个:
 
  1. (defun c:FOO  (/ eName eList)
  2. (if (and (setq eName (car (entsel "\n  >>  Select an Arc or Ciricle: ")))
  3.           (wcmatch (cdr (assoc 0 (setq eList (entget eName)))) "ARC,CIRCLE"))
  4.    (prompt
  5.      (strcat
  6.        "\n  >>  Radius = "
  7.        (rtos (cdr (assoc 40 eList)) 2 2)))
  8.    (prompt "\n  <!>  Invalid Object  <!> "))
  9. (princ))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:40:49 | 显示全部楼层
从我的工具箱里。。。
 
  1. (defun c:Rad (/ ent cen)
  2. ;; Check radius of selected arc segment
  3. ;; Alan J. Thompson, 05.17.10
  4. (if (setq ent (nentsel "\nSelect arc segment: "))
  5.    (if (setq cen (osnap (cadr ent) "_cen"))
  6.      (alert (strcat "Radius: " (rtos (distance (osnap (cadr ent) "_near") cen))))
  7.      (alert "Segment not an arc!")
  8.    )
  9. )
  10. (princ)
  11. )

 
适用于具有半径的任何对象(LW多段线线段、圆弧、椭圆、圆)。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:42:54 | 显示全部楼层
给猫剥皮有很多方法:
 
 
  1. [b][color=BLACK]([/color][/b]defun c:getarc [b][color=FUCHSIA]([/color][/b]/ ss en ed ce ra[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]or [b][color=MAROON]([/color][/b]not ss[b][color=MAROON])[/color][/b]
  3.             [b][color=MAROON]([/color][/b]/= [b][color=GREEN]([/color][/b]sslength ss[b][color=GREEN])[/color][/b] 1[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.         [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect 1 ARC"[/color][b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"ARC"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]setq en [b][color=NAVY]([/color][/b]ssname ss 0[b][color=NAVY])[/color][/b]
  7.        ed [b][color=NAVY]([/color][/b]entget en[b][color=NAVY])[/color][/b]
  8.        ce [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc 10 ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  9.        ra [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc 40 ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  10. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:49:25 | 显示全部楼层
 
 
熟练使用OSNAP(5分!),我的朋友。我从未真正考虑过距离函数,因为该属性可用。
 
你知道它也来了,不是吗!?是的。。。。当之无愧:
 

                               
登录/注册后可看大图
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:54:06 | 显示全部楼层
哈哈,谢谢。真正的优势是“cen”的OSnap是对象过滤器,可以处理任何半径的对象。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:57:20 | 显示全部楼层
 
不客气。
 
真的,真的。很酷,艾伦。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:03:41 | 显示全部楼层
艾伦,
 
我认为,如果用户在选择过程中添加透明的OSNAP,则有可能返回错误的结果:
 
使用_end在洋红色线附近但不在弧上选择线红线。它说它有一个半径-大卫
测验图纸
112350x1f5btrh5br55h3j.jpg
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:08:25 | 显示全部楼层
是的,它确实有局限性。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:59 , Processed in 0.787635 second(s), 85 queries .

© 2020-2025 乐筑天下

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