乐筑天下

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

[编程交流] Lisp文件需要一些帮助。

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:43:38 | 显示全部楼层
 
绝对不过分-考虑一下如何在不使用位操作的情况下执行相同的任务(即打开额外的OSNAP,同时保留已打开的OSNAP)。。。
 
此外,在使用这些工具时,您可以对值进行更多的控制(例如,请参阅我创建切换的示例),并且使用设计用于操作这些值的函数来控制位编码值是有意义的。
 
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:47:16 | 显示全部楼层
 
我看到了这些很好的例子,我不会对此进行争辩,但在莱森的上述代码中,他使用的方式与您的切换示例不同。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:49:04 | 显示全部楼层
 
谢谢-
 
但是我解释Laison代码的方式是,他希望启用这些快照(1 2 4 32 128 8192)除了当前的OSnap设置之外,我很好奇除了logior之外还有什么更好的方法来实现这一点。
 
旁白——我并不是说莱森的代码在整体上是正确的,但如果我对其目的的理解是正确的,我想找到一种更好的方法来编写OSnap部分。
 
编辑:快速编写了这个函数,我希望它执行相同的操作,但没有使用位包含或函数(例如logior)-只是为了进行比较。
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] [color=black]_SnapSetting[/color] [b][color=RED]([/color][/b] n [b][color=BLUE]/[/color][/b] _GetBits [color=black]os [/color][b][color=RED])[/color][/b]
  2. [i][color=#990099];; This is not a practical example in[/color][/i]
  3. [i][color=#990099];; any way, as the easiest way to accomplish[/color][/i]
  4. [i][color=#990099];; this task would be to IOR the existing[/color][/i]
  5. [i][color=#990099];; snap value with that which is desired -[/color][/i]
  6. [i][color=#990099];; however, I am trying to demonstrate a possible[/color][/i]
  7. [i][color=#990099];; method to accomplish the same operation *without*[/color][/i]
  8. [i][color=#990099];; the use of bit-wise inclusive OR function.[/color][/i]
  9. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] _GetBits [b][color=RED]([/color][/b] x [b][color=RED])[/color][/b]
  10.    [i][color=#990099];; This function returns a list of all the bits[/color][/i]
  11.    [i][color=#990099];; that make up a bit coded value 'x'.[/color][/i]
  12.    [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] _GetBits [b][color=RED]([/color][/b] x i [b][color=RED])[/color][/b]
  13.      [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]0[/color][/b] x[b][color=RED])[/color][/b]
  14.        [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]=[/color][/b] i [b][color=RED]([/color][/b][b][color=BLUE]logand[/color][/b] x i[b][color=RED]))[/color][/b]
  15.          [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] i [b][color=RED]([/color][/b]_GetBits [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] x i[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lsh[/color][/b] i [b][color=#009900]1[/color][/b][b][color=RED])))[/color][/b]
  16.          [b][color=RED]([/color][/b]_GetBits x [b][color=RED]([/color][/b][b][color=BLUE]lsh[/color][/b] i [b][color=#009900]1[/color][/b][b][color=RED]))[/color][/b]
  17.        [b][color=RED])[/color][/b]
  18.      [b][color=RED])[/color][/b]
  19.    [b][color=RED])[/color][/b]
  20.    [b][color=RED]([/color][/b]_GetBits x [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b]
  21. [b][color=RED])[/color][/b]
  22. [i][color=#990099];; Split n into its constituent bits and get the current[/color][/i]
  23. [i][color=#990099];; OSMODE value for comparison.[/color][/i]
  24. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] n [b][color=RED]([/color][/b]_GetBits n[b][color=RED])[/color][/b] [color=black]os [/color][b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=DARKRED]'[/color][/b]OSMODE[b][color=RED]))[/color][/b]
  25. [i][color=#990099];; Now we do the operation that a bit-wise inclusive[/color][/i]
  26. [i][color=#990099];; OR would do in one step: If the bits constituting[/color][/i]
  27. [i][color=#990099];; our value 'n' do not appear in the current OSMODE[/color][/i]
  28. [i][color=#990099];; value, then add them to it.[/color][/i]
  29. [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] bit n
  30.    [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]logand[/color][/b] bit [color=black]os[/color][b][color=RED]))[/color][/b]
  31.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] [color=black]os[/color] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [color=black]os [/color]bit[b][color=RED]))[/color][/b]
  32.    [b][color=RED])[/color][/b]
  33. [b][color=RED])[/color][/b]
  34. [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=DARKRED]'[/color][/b]OSMODE [color=black]os[/color][b][color=RED])[/color][/b]
  35. [b][color=RED])[/color][/b]
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:52:40 | 显示全部楼层
我正在看你关于osmode设置和使用logior的帖子。我的目标是只使用这些设置。
 
显然,如果我是正确的,我必须关闭osnaps,而不是设置osmode设置。此外,当我设置osmode设置时,如果我要使用超过1,我应该将它们相加。
 
这是我从帖子里得到的吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:56:16 | 显示全部楼层
 
从您最初的帖子判断,您当前使用的代码是在已经设置的OSMODE设置之外设置这些OSMODE设置。
 
要仅设置这些设置,您可以存储当前设置,然后用所需的设置覆盖它,即:
 
然后在代码末尾(以及错误处理程序中)恢复旧设置:
 
  1. (setq os (getvar 'OSMODE))
  2. (setvar 'OSMODE (+ 1 2 4 32 128 8192))

 
另一方面,(boole 5 os(+1 2 4 32 128 8192))将给出相同的结果。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:00:21 | 显示全部楼层
我想我毕竟没有偏离目标。
 
  1. (setvar 'OSMODE os)

 
  1. (setq os (getvar "OSMODE")) ;Save User Object Snaps

 
  1. 9
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 11:01:58 | 显示全部楼层
无论如何,我很喜欢这个帖子中的偏差,我希望我之前的帖子不会被浪费。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:07:45 | 显示全部楼层
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:09:33 | 显示全部楼层
I guess I was not off the mark afterall.
 
  1. (setq os (getvar "OSMODE")) ;Save User Object Snaps
 
  1. (setvar "OSMODE" Your new setting here) ; Add-on to your orginal object snap setting
 
  1. (setvar "OSMODE" os) ;Restore your Saved User Object Snaps
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:12:27 | 显示全部楼层
In any case, I have enjoyed the deviation in this thread, and I hope my earlier posts aren't wasted.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:43 , Processed in 1.367344 second(s), 70 queries .

© 2020-2025 乐筑天下

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