乐筑天下

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

[编程交流] IF和COND参数作为范围

[复制链接]

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:26:48 | 显示全部楼层 |阅读模式
大家好
 
我正在编写一个lisp例程,希望创建IF和COND函数,其中第一个参数是一个范围

>5.75947弧度(330°),但
>1.04718弧度(60°),但
>2.61794弧度(150°),但
>4.18870弧度(240°),但
 
我尝试了以下方法,但似乎无法奏效
 
(setq p1(cdr(assoc 10 a2)))
(setq p2(cdr(assoc 11 a2)))
(setq a3(角度p1 p2))
 
(条件
((或(>a3 1.04718)(
((或(>a3 5.75947)(
((或(>a3 2.61794)(
((或(>a3 4.18870)(
)
 

 
(如果(或(>a3 4.18870)(
)
 
正确的语法是什么?
 
提前感谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:36:12 | 显示全部楼层
如果过滤两个以上的潜在结果,那么cond是你的朋友,否则我会使用If。
(布莱恩,你看到我刚才做的事了吗!?-斯图·格里芬)
 
看来你错过了一些父母;你在用VLIDE吗?
 
试试这个:
 
  1. (cond
  2. ((or (> a3 1.0471[color=red][b])[/b][/color] (< a3 2.09435)) (progn . . . . . . . . .))
  3. ((or (> a3 5.75947) (< a3 0.52359)) (progn . . . . . . . . .))
  4. ((or (> a3 2.61794) (< a3 3.66512)) (progn . . . . . . . . .))
  5. ((or (> a3 4.18870) (< a3 5.2358)[color=red][b])[/b][/color] (progn . . . . . . . . .)))

 
 
希望这有帮助!
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:41:35 | 显示全部楼层
谢谢你。
 
哎呀,缺少的参数是线程中的拼写错误,但它们在程序中。我没有使用VLIDE,我是在记事本中创建的。可能应该试试VLIDE。
 
除了cond语法之外的打字错误应该可以吗?也许我需要在我的日常生活中寻找其他不工作的地方?
 
再次感谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:43:13 | 显示全部楼层
不客气。
 
 
 
如果要使用LISP为AutoCAD编码,我强烈建议您开始使用Visual LISP集成开发环境(VLIDE)。
 
首先,在命令行中键入VLIDE,然后按enter键。点击F1按钮,您可以从开发人员文档开始。
 
 
 
不确定。我提供给您的可能是错误的,因为我不知道您在代码中还做了什么。
 
在这种情况下,最简单的方法可能是发布代码。如果你能提供一些额外的细节,说明你想做什么,这可能会有所帮助。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:53:32 | 显示全部楼层
如。
  1. (defun foo (v)
  2. (cond
  3.    ((< 0. v (/ pi 2.)) (alert "1"))
  4.    ((< (/ pi 2.) v pi) (alert "2"))
  5.    ((< pi v (* 1.5 pi)) (alert "3"))
  6.    ((< (* pi 2.) v (* 1.5 pi)) (alert "4"))
  7.    ((alert "NADA"))
  8. )
  9. )

 
我建议你用分数代替近似值。
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:54:12 | 显示全部楼层
高渲染
 
不用回复wordy,以下是我想要做的!!
 
我创建了两个例程,如果在可接受的公差范围内,则将线平方到当前UCS。VA.lsp用于垂直线和HA。水平线的lsp。
 
我已经测试了一段时间,现在想:
 
1.结合到一个例程,该例程“检测”是否需要运行HA或VA
2、在多条线路上运行,而不是在一条线路上运行。
3.设置公差变量,如果低于10 mm,则程序继续,但如果高于11 mm,则检查是否继续。我还没有完成,只是设置了变量。
4.如果程序结束或中途终止,则重置当前层、osmode和osnaps。
5.检查实体是否为“线”,如果不是,则警告多边形线,并移动到下一个实体和/或干净地终止程序。最终,我希望这一例行工作的保利线太多,但需要步行之前运行!!!我已经编写了耦合检查变量,但没有完成IF函数,目前是REM语句。
 
原始HA和VA包含在HaVa中,并重命名为HA2/VA2。有些行现在是REM语句,因为组合程序不需要。
 
如果您有任何想法,我们将不胜感激。
 
再次感谢您的帮助和投入。
哈瓦。lsp
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 11:04:15 | 显示全部楼层
不客气。
 
我很感激你最初的帖子不是一个完整的定制例程的愿望清单;我可以看出你在这方面做了一些工作,这一直是值得赞赏的。
 
我现在工作很忙,但我会在可能的时候用这个帖子回来。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:07:47 | 显示全部楼层
你应该能够将过程浓缩一些:
 
  1. [b][color=BLACK]([/color][/b]initget 7[b][color=BLACK])[/color][/b]
  2. [b][color=BLACK]([/color][/b]setq tolerance [b][color=FUCHSIA]([/color][/b]getreal [color=#2f4f4f]"\nEnter acceptable tolerance > : "[/color][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
  3. [b][color=BLACK]([/color][/b]and [b][color=FUCHSIA]([/color][/b]setq i -1
  4.         ss1 [b][color=NAVY]([/color][/b]ssget '[b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]0 . [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5.     [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq a1 [b][color=MAROON]([/color][/b]ssname ss1 [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1+ i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  6.            [b][color=NAVY]([/color][/b]setq a2 [b][color=MAROON]([/color][/b]entget a1[b][color=MAROON])[/color][/b]
  7.                  p1 [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 10 a2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  8.                  p2 [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 11 a2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  9.                  a3 [b][color=MAROON]([/color][/b]angle p1 p2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  10.            [b][color=NAVY]([/color][/b]cond [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]or [b][color=BLUE]([/color][/b]> 2.09435 a3 1.04718[b][color=BLUE])[/color][/b]
  11.                       [b][color=BLUE]([/color][/b]> 5.23588 a3 4.18870[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  12.                   [b][color=GREEN]([/color][/b]VA2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  13.                  [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]or [b][color=BLUE]([/color][/b]> 0.52359 a3 5.75947[b][color=BLUE])[/color][/b]
  14.                       [b][color=BLUE]([/color][/b]> 3.66512 a3 2.61794[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  15.                   [b][color=GREEN]([/color][/b]HA2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:11:25 | 显示全部楼层
大卫
 
谢谢你的代码,我很抱歉延迟回复你的帖子。我会把它和我原来的套路结合起来,看看会怎么样。
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:17:44 | 显示全部楼层
嗨,大卫
 
我在你的代码中工作,并设法使其全部工作,只需对你的cond程序的第4行稍作修改,我不喜欢范围参数,我认为因为它跨越了零度,所以只需将参数从0°拆分为30°和330°拆分为359.9999°
 
 
(条件((或(>2.09435 a3 1.04718)
(>5.23588 a3 4.18870))
(VA2))
((或(>0.52359 a3 0.00000)
(>6.28305 a3 5.75947)
(>3.66512 a3 2.61794))
(HA2 \40705;鼁)鼁)
 
非常感谢您的投入,也感谢Renderman和Alanjt的回复。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:51 , Processed in 0.479409 second(s), 72 queries .

© 2020-2025 乐筑天下

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