乐筑天下

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

[编程交流] 缩放到特定的文字lisp

[复制链接]

55

主题

118

帖子

65

银币

后起之秀

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

铜币
273
发表于 2022-7-5 15:55:28 | 显示全部楼层 |阅读模式
我在一个模板autocad文件中有几个布局,由于项目的大小以及阶段本身的原因,这些布局将被多次使用,因此我需要将整个站点划分为A0 1:50比例的十进制类型。我已经创建了所有布局,尽管MVIEW被缩放到同一点,因为我只是复制了带有后续数字的布局。我用于划分站点的网格中的每个图块也有后续的数字,因此在每个布局上,我可以通过过滤内容精确地缩放到该实体,以获得每个布局上的特定实体(数字),依此类推。每个图块中间的每个数字都是唯一的,因此能够在每个布局中放大它,以获得网站的整个拼图。
 
我在网上找到了一个小程序,可以过滤整个图纸文本的内容:
 
(ssget“_X”'((0。“TEXT,MTEXT”)(1。“501”))
 
501将是在所有不同布局中缩放到特定比例的文本内容之一。我想避免手动操作,因为这意味着很多步骤,所以我认为可以使用setq liusp命令设置一个变量,该命令可以在例程每次运行时添加一个值,因此当我转到下一个布局并运行例程时,数字将为502。
 
我发现的问题是,这个数字不能用setq lisp命令定义的变量值代替,因此整个例程都没有用处。
 
这是我正在使用的例程:
 
(定义c:sss()
(ssget“_X”'((0。“TEXT,MTEXT”)(1。“501”))
(命令“zoom”“o”“p”“”
“zoom”“1000/50xp”)
)
 
我需要用“501”替换之前由setq定义的变量。这可能吗?
 
请帮帮我,这件事非常紧急。
 
谢谢
回复

使用道具 举报

55

主题

118

帖子

65

银币

后起之秀

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

铜币
273
发表于 2022-7-5 15:59:44 | 显示全部楼层
对不起,我忘了说我用的是AutoCAD 2006,
 
再次感谢
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-5 16:02:27 | 显示全部楼层
是的,这是可能的。
 
首先需要将变量“number”转换为“text”,如中所示;
 
(setq Numtxt(rtos num 2 0));;如果var是实数或整数
 

 
(setq Numtxt(itoa num));;如果var是整数
 
然后
 
(ssget“_X”(list)(0。“TEXT,MTEXT”)(cons 1 numtext)))
回复

使用道具 举报

0

主题

6

帖子

6

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:05:20 | 显示全部楼层
你好
我很难让这一常规发挥作用。请容忍我不知道如何写lisp代码。我通常只是找到一些可以工作的东西并加载它。在此方面的任何帮助都将不胜感激。
 
当我运行这个时,我得到了这个错误:
; 错误:错误的参数类型:fixnump:nil
 
(定义c:sss()
(setq Numtxt(itoa num));;
(ssget“_X”(list)(0。“TEXT,MTEXT”)(cons 1 numtext)))
(命令“zoom”“o”“p”“”
“zoom”“1000/200xp”)
)
 
当我运行这个时,我得到了这个错误:
 
; 错误:错误的参数类型:numberp:nil
 
(定义c:sss()
(setq Numtxt(rtos num 2 0));;
(ssget“_X”(list)(0。“TEXT,MTEXT”)(cons 1 numtext)))
(命令“zoom”“o”“p”“”
“zoom”“1000/200xp”)
)
 
基本上,我在模型空间中有一个网格和数百个布局选项卡,根据每个网格编号命名(3548A1、3548A2、3548A3…)。我想进入布局,进入thr视口并运行此例程。希望例程能提示我输入一个网格编号(文本),然后找到它并将其缩放到一定的比例。提前感谢您的帮助。
回复

使用道具 举报

17

主题

127

帖子

110

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-5 16:09:21 | 显示全部楼层
 
引号中的值是否对应布局编号?在布局1中,您的ssget声明的含义是:
 
  1. (ssget "_X" '((0 . "TEXT,MTEXT")(1 . "1")))

 
那么Layout2就是“2”,以此类推?
回复

使用道具 举报

0

主题

6

帖子

6

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:12:00 | 显示全部楼层
说实话,我不知道。我真的不知道怎么写代码。无论如何,有没有这个例程提示我输入我希望它缩放到的网格编号文本?
 
谢谢
回复

使用道具 举报

17

主题

127

帖子

110

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-5 16:14:55 | 显示全部楼层
 
要向用户请求字符串,请使用以下命令:
 
  1. (setq str (getstring "\nEnter text string to search for: "))

 
其他:
 
实数=getreal
整数=getint
点=获取点
关键字=getkword
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:19:18 | 显示全部楼层
尚未阅读全文,但这可能会提供一些见解:
 
  1. (defun c:FindText nil
  2. (sssetfirst nil
  3.    (ssget "_X"
  4.      (list
  5.        (cons 0 "TEXT,MTEXT")
  6.        (cons 1 (strcat "*" (getstring t "\nSpecify Text to Search for <All> : ") "*"))
  7.      )
  8.    )
  9. )
  10. (princ)
  11. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:22:30 | 显示全部楼层
 
要了解原因,请阅读以下内容:
http://www.cadtutor.net/forum/showpost.php?p=258390&postcount=20
回复

使用道具 举报

0

主题

6

帖子

6

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:26:25 | 显示全部楼层
我试着运行下面的代码,它提示我输入一个文本字符串。例如,我输入3647B3,然后按enter键,它会缩放到我想要的比例,但不会缩放到那个文本,它只是缩放到一个随机点?再次感谢你的帮助,这将是一个救命稻草!
 
(定义c:sss()
(setq str(getstring“\n输入要搜索的文本字符串:”))
(命令“zoom”“o”“p”“”
“缩放”“1/100xp”)
)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 20:22 , Processed in 0.489986 second(s), 83 queries .

© 2020-2025 乐筑天下

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