乐筑天下

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

[编程交流] 粘贴剪辑对话框窗口支持

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:03:05 | 显示全部楼层 |阅读模式
我正在做一个完全自动化的程序,不允许用户输入。我需要执行的任务之一是将OLE对象从Excel复制到AutoCAD图形中,我已经使用PASTECLIP命令使该部分工作。问题是粘贴剪辑对话框打开,等待用户输入。。。。这对我来说是不可能的。我曾尝试在命令后放置一组、两组甚至三组“”,以使窗口消失。但它会一直保持不变,直到用户做出响应。在LISP中有没有办法抑制对话框?
 
当我再次选中它时,它是一个OLE文本大小的对话框。我不需要做任何更改,只是让盒子永远不会自动打开或关闭,让其余的代码完成绘图。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:12:39 | 显示全部楼层
也许是MSOLESCALE。
 
我不太清楚为什么在我的生活中会发生这样的事情:
  1. Command: (progn (command "pasteclip" (getpoint)) (prompt "\n\nThis has
  2. finished") (princ))
  3. pasteclip
  4. Specify insertion point: [color=red]Unable to find OLE object.  Object must be selected
  5. before entering the OLESCALE command.[/color]
  6. Command:
  7. This has finished
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:14:55 | 显示全部楼层
不知道那个设置。。。但是,在AutoCAD中,有如此多的环境设置是人们永远不知道的。
 
我使用pastespec尝试了几个变体,但对话框仍然存在问题。我认为,像filedia一样,有一个系统变量来抑制对话框,但在本例中,我仍然无法做到这一点。
 
我确实在“关闭OLE文本大小对话框的选项”下的“系统”选项卡下找到了一个选项设置,这很有效。但不幸的是,我需要尝试并找出如何在运行中执行此操作,然后返回设置,以便在LISP代码完成其工作后用户的环境不会改变。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:21:48 | 显示全部楼层
通过让办公室中的所有其他用户在选项设置中关闭“OLE文本大小对话框”设置,我已经部分解决了这个问题。这是老板决定的,因为他想继续干下去。但我认为不久之后,当这种设置在他们的环境中的其他地方引起冲突时,我们会有一些态度温和的用户向我们发送邮件。我无法想象,但是墨菲定律会在这里发挥作用。
 
我现在遇到的最大问题是,我使用这个命令将OLE对象粘贴到模型空间中。
这会将对象带入并将其角点放置在(-170.0,0.0)。。。。有时我在我的机器上运行它,它工作了。我仔细检查了它,它工作了,但它将OLE对象放置在(-107.25.4.4375)。我永远也不知道它是怎么得到这些坐标的。然后我让老板检查一下,果然又出现了错误的地方。
 
我想知道是不是因为在绘图过程的初始阶段,屏幕上实际上看不到位置(-170.0,0.0)。我无法想象这一点,因为在这个过程中,我不得不通过所有的修剪和复制来艰难地学习这一课。我不记得在绘制时在屏幕上看不到的线条时遇到过问题。但这种碰不着的情况让我感到困惑。
 
暂时的解决方法是首先画一条从0,0到-175,0的线。然后我做了一个全缩放,将插入点显示在屏幕上。我将OLE对象复制到适当的位置,然后删除原始行。然后绘图过程开始了,一切都很好。但我相信有更好的方法来完成这项任务。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:25:25 | 显示全部楼层
  1. (command "._pasteclip" "_non" '(-170.0 0.0) "")
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:32:28 | 显示全部楼层
李,
 
尚未尝试,但很快就会尝试。我以前从未听说过这种语法。它有什么作用?它是告诉pasteclip命令忽略对话框窗口还是强制OLE对象插入到正确的点,即使它不在屏幕上?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:36:21 | 显示全部楼层
“_non”忽略任何OSNAP。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:41:08 | 显示全部楼层
是的,“Non”是“None”的缩写。。。比如“强制osnap为None,而不是使用正在运行的快照”。当然,您可以修改OSMode系统变量以省略运行快照(暂时关闭,通过将其设置为负值,通过再次将其设置为正值来恢复)-但是,您将需要错误陷阱,以便在所有场景中恢复它(许多LISP无法正确执行此操作,如果出现问题,您最终会失去运行快照设置)。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:43:33 | 显示全部楼层
顺便说一句,我发现了如何通过编程关闭OLE大小对话框。
  1. 3
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:48:06 | 显示全部楼层
谢谢你们。我真的希望有一个编程方法来实现这一点。只要我可以通过代码更改用户的环境(他们不知道),整个过程就越好。需要我说更多关于一些人的领土可以和这个商店是不缺乏这个问题。
 
是的,imeb,我在afralisp上发现了一个非常好的错误捕捉片段。net解决了在代码工作时将系统变量(如osnap)设置为零的问题。如果遇到任何类型的错误,包括用户按Ctrl+C或Esc。。。等错误陷阱捕捉该事件并将所有内容重置回其原始状态。而用户从未意识到这一点。我认为李的网站上也有错误处理程序。我应该去看看。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:59 , Processed in 1.354300 second(s), 72 queries .

© 2020-2025 乐筑天下

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