乐筑天下

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

[编程交流] 这能做到吗?有点疯狂

[复制链接]

18

主题

71

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 08:21:56 | 显示全部楼层 |阅读模式
目前我有10个lisp例程名P1,P2。。。,他们创建了一条宽度与相应数字匹配的线。P1生成一条1“宽的多段线,P2生成一条2”的多段线,等等。是否可以创建一个通用的“P”命令,该命令将传递用户在“P”之后输入的数值,并创建一条具有该宽度的多段线?例如,在P2.5中输入将创建一条2.5“宽的多段线。可行吗?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:28:27 | 显示全部楼层
  1. (defun c:pg nil
  2.      (if (not width)
  3.            (setq width 1.00))
  4.      (setq width (cond
  5.                       ((getreal
  6.                              (strcat "\nEnter Width <"
  7.                                      (rtos width 2 2)
  8.                                      ">: ")))
  9.                       (width)))
  10.      (setvar 'Plinewid width)
  11.      (command "_pline")
  12.      )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:35:22 | 显示全部楼层
这里有一个黑客使用命令反应器和Windows脚本主机(WSH)来演示,是的,这是可能的:
 
  1. ([color=BLUE]vl-load-com[/color])
  2. ([color=BLUE]if[/color] ([color=BLUE]null[/color] *command-reactor*)
  3.    ([color=BLUE]setq[/color] *command-reactor* ([color=BLUE]vlr-command-reactor[/color] [color=BLUE]nil[/color] '(([color=BLUE]:vlr-unknowncommand[/color] . callback))))
  4. )
  5. ([color=BLUE]defun[/color] callback ( reactor params [color=BLUE]/[/color] pw )
  6.    ([color=BLUE]if[/color]
  7.        ([color=BLUE]and[/color]
  8.            ([color=BLUE]wcmatch[/color] ([color=BLUE]setq[/color] params ([color=BLUE]strcase[/color] ([color=BLUE]car[/color] params))) [color=MAROON]"P#*"[/color])
  9.            ([color=BLUE]setq[/color] pw ([color=BLUE]distof[/color] ([color=BLUE]substr[/color] params 2)))
  10.            ([color=BLUE]<[/color] 0 ([color=BLUE]setq[/color] pw ([color=BLUE]fix[/color] pw)))
  11.        )
  12.        ([color=BLUE]progn[/color]
  13.            ([color=BLUE]eval[/color]
  14.                ([color=BLUE]list[/color] '[color=BLUE]defun[/color]
  15.                    ([color=BLUE]read[/color] ([color=BLUE]strcat[/color] [color=MAROON]"C:P"[/color] ([color=BLUE]itoa[/color] pw)))
  16.                   '( [color=BLUE]/[/color] pw )
  17.                   '([color=BLUE]setq[/color] pw ([color=BLUE]getvar[/color] [color=MAROON]"PLINEWID"[/color]))
  18.                    ([color=BLUE]list[/color] '[color=BLUE]setvar[/color] [color=MAROON]"PLINEWID"[/color] pw)
  19.                   '([color=BLUE]command[/color] [color=MAROON]"_.pline"[/color])
  20.                   '([color=BLUE]while[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]logand[/color] 1 ([color=BLUE]getvar[/color] [color=MAROON]"CMDACTIVE"[/color]))) ([color=BLUE]command[/color] [color=BLUE]pause[/color]))
  21.                   '([color=BLUE]setvar[/color] [color=MAROON]"PLINEWID"[/color] pw)
  22.                   '([color=BLUE]princ[/color])
  23.                )
  24.            )
  25.            (LM:SendKeys ([color=BLUE]strcat[/color] [color=MAROON]"P"[/color] ([color=BLUE]itoa[/color] pw) [color=MAROON]"~"[/color]))
  26.        )
  27.    )
  28.    ([color=BLUE]princ[/color])
  29. )
  30. [color=GREEN];; Send Keys  -  Lee Mac[/color]
  31. [color=GREEN];; A wrapper function for the SendKeys method of the WSH[/color]
  32. ([color=BLUE]defun[/color] LM:SendKeys ( keys [color=BLUE]/[/color] wsh )
  33.    ([color=BLUE]setq[/color] wsh ([color=BLUE]vlax-create-object[/color] [color=MAROON]"WScript.Shell"[/color]))
  34.    ([color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vlax-invoke[/color] ([color=BLUE]list[/color] wsh 'sendkeys keys))
  35.    ([color=BLUE]vlax-release-object[/color] wsh)
  36.    ([color=BLUE]princ[/color])
  37. )
  38. ([color=BLUE]princ[/color])

 
当做
米尔恰
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:41:58 | 显示全部楼层
 
谢谢Mircea这是个好主意
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:48:35 | 显示全部楼层
如果只使用一个子例程,而不是为每个P*调用创建一个命令,不是更容易、更省力吗?
 
如。
  1. (< 0 (setq pw (/ (fix pw) 100.0)))
  2. P35    -->   0.35
  3. P245   -->   2.45
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 08:52:36 | 显示全部楼层
这是另一种选择,但我不希望反应堆点火,“未知命令”消息打印得比需要的多,因此一旦命令被定义,反应堆就停止为该命令点火。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:55:10 | 显示全部楼层
嗯,美学被高估了。
 
 
现在我想起来了,有没有一条关于偏移量的类似的长线程?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:01:26 | 显示全部楼层
 
我有一个类似的想法,但无法快速识别线程,所以我回去工作-我认为这是一个AUGI线程,Irneb测试了这个假设。也许我在想另一条线索。
 
编辑-此外,我们不应该避免从命令反应器的回调中调用命令吗?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:05:59 | 显示全部楼层
不,它在这里,有很多火焰。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:12:22 | 显示全部楼层
 
 
干得好:http://www.cadtutor.net/forum/showthread.php?53630-偏移Lisp
 
编辑-我最喜欢的新照片之一:
 
[img]http://t1.gstatic.com/images?q=tbn:ANd9GcQPPHh_z8UEIHqSDTVP0QgfMz2sjG9pTaidMQrIaIeQD-bQoukskA[img]
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 07:48 , Processed in 0.403228 second(s), 83 queries .

© 2020-2025 乐筑天下

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