乐筑天下

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

[编程交流] 在屏幕上显示对象

[复制链接]

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:10:25 | 显示全部楼层 |阅读模式
我想画一个定义了宽度和长度的矩形,但用户选择插入点和旋转。但问题是,我希望用户在指向插入点时看到对象,就像插入块一样
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:19:23 | 显示全部楼层
您应该使用第一个点作为第二次交互的参数(可以使用GETCORNER而不是GETPOINT):
  1. (setq Point1st (getpoint "\First corner: ")
  2.      Point2nd (getcorner Point1st "\nSecond corner: "))

 
当做
米尔恰
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:21:44 | 显示全部楼层
我知道这一点,但当您选择第一个或第二个点时,不会显示对象,我希望如此
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:25:27 | 显示全部楼层
对不起,我想我误读了你的第一句话。你想要预览一个自定义形状和他的方向吗?
为此,您应该检查GRREAD、GRDRAW和GRVECS函数-您将在论坛上找到一些很棒的示例。
 
当做
米尔恰
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 08:31:01 | 显示全部楼层
我认为这可以通过使用grread实现
GRREAD使用示例-让我们分享
在屏幕上显示光标附近的任何文本[grread+grvecs]
http://www.theswamp.org/index.php?action=search2
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:35:35 | 显示全部楼层
是的,这正是我想要的,非常感谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:40:20 | 显示全部楼层
grread函数将暂停以获取某种形式的用户输入,然后返回有关检测到的用户输入的信息,无论是光标位置、鼠标单击还是键盘输入。
 
在while循环中使用时,您可以连续监视用户输入并相应地更新显示。
 
但是,grread功能的一个主要缺点是,在暂停以供用户输入时,所有标准AutoCAD功能都被禁用。这意味着用户无法访问对象捕捉、跟踪、正交模式等。对于大多数绘图操作来说,仅为了实现奇特效果而进行这种权衡通常不是一种选择。
 
任务的另一种选择可能是使用内置RECTANG命令提供的各种选项,例如:
 
  1. (defun c:MyRec ( / p1 )
  2.    (if (setq p1 (getpoint "\nSpecify First Corner: "))
  3.        (progn
  4.            (command "_.rectang" "_non" p1 "_D" 4 2)
  5.            (while (= 1 (logand 1 (getvar 'CMDACTIVE)))
  6.                (command pause)
  7.            )
  8.        )
  9.    )
  10.    (princ)
  11. )
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 08:46:22 | 显示全部楼层
  1. (defun C:TEST ( / ss len wd el)
  2. (if (not (tblsearch "BLOCK" "MyRectangle"))
  3.    (progn
  4.    (setq ss (ssadd)
  5.          ss (ssadd (entmakex '((0 . "LINE") (10 0.0 0.0 0.0) (11 1.0 0.0 0.0))) ss)
  6.          ss (ssadd (entmakex '((0 . "LINE") (10 1.0 0.0 0.0) (11 1.0 1.0 0.0))) ss)
  7.          ss (ssadd (entmakex '((0 . "LINE") (10 1.0 1.0 0.0) (11 0.0 1.0 0.0))) ss)
  8.          ss (ssadd (entmakex '((0 . "LINE") (10 0.0 1.0 0.0) (11 0.0 0.0 0.0))) ss)
  9.          )
  10.    (command "BLOCK" "MyRectangle" '(0 0 0) ss "")
  11.    )
  12.    )
  13. (if
  14.    (and
  15.      (setq len (getdist "\Length: "))
  16.      (setq wd (getdist "\Width: "))
  17.      )
  18.    (progn
  19.      (setq el (entlast))
  20.      (command "INSERT" "MyRectangle" "X" len "Y" wd)
  21.      (while (= 1 (getvar 'cmdactive))
  22.        (command pause)
  23.        )
  24.      (if (not (eq el (entlast)))
  25.        (command "EXPLODE" "L" ""
  26.                 "PEDIT" "M" "P" "" "Y" "J" "" "")
  27.        )
  28.      )
  29.    )
  30. (princ)
  31. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:51:31 | 显示全部楼层
不错,斯特凡。
如果你不介意,我将发表一些评论:
[列表=1]
  • 尝试禁用CMDECHO以对提示符产生干净的影响。
  • 为了使这更具活力,可以先要求尺寸,然后按比例构建“图标”;当不再有用时清除它。
  • 使用EXPLODE命令时,无需关闭选择周期。
    1. (command "EXPLODE" "L" [color=red]""[/color])

    问候,
    米尔恰
  • 回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 08:52:07 | 显示全部楼层
    好主意,Stefan,这是对你的代码的一点改进,希望你不介意:
     
    1. ([color=BLUE]defun[/color] c:brec
    2.    ( [color=BLUE]/[/color] *error* _getdist en va vr )
    3.    [color=GREEN];; Block Rectangle[/color]
    4.    [color=GREEN];; By Lee Mac, based on ideas by Stefan BMR[/color]
    5.    ([color=BLUE]defun[/color] *error* ( msg )
    6.        ([color=BLUE]if[/color] va ([color=BLUE]mapcar[/color] '[color=BLUE]setvar[/color] vr va))
    7.        ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] msg) [color=MAROON]"*BREAK,*CANCEL*,*EXIT*"[/color]))
    8.            ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nError: "[/color] msg))
    9.        )
    10.        ([color=BLUE]princ[/color])
    11.    )
    12.    ([color=BLUE]if[/color] ([color=BLUE]null[/color] ([color=BLUE]tblsearch[/color] [color=MAROON]"BLOCK"[/color] [color=MAROON]"$MyRectangle$"[/color]))
    13.        ([color=BLUE]progn[/color]
    14.            ([color=BLUE]entmake[/color]
    15.               '(
    16.                    (0 . [color=MAROON]"BLOCK"[/color])
    17.                    (8 . [color=MAROON]"0"[/color])
    18.                    (2 . [color=MAROON]"$MyRectangle$"[/color])
    19.                    (10 0.0 0.0 0.0)
    20.                    (70 . 0)
    21.                )
    22.            )
    23.            ([color=BLUE]entmake[/color]
    24.               '(
    25.                    (0 . [color=MAROON]"LWPOLYLINE"[/color])
    26.                    (100 . [color=MAROON]"AcDbEntity"[/color])
    27.                    (100 . [color=MAROON]"AcDbPolyline"[/color])
    28.                    (8 . [color=MAROON]"0"[/color])
    29.                    (90 . 4)
    30.                    (70 . 1)
    31.                    (10 0.0 0.0)
    32.                    (10 1.0 0.0)
    33.                    (10 1.0 1.0)
    34.                    (10 0.0 1.0)
    35.                )
    36.            )
    37.            ([color=BLUE]entmake[/color]
    38.               '(
    39.                    (0 . [color=MAROON]"ENDBLK"[/color])
    40.                    (8 . [color=MAROON]"0"[/color])
    41.                )
    42.            )
    43.        )
    44.    )
    45.    ([color=BLUE]defun[/color] _getdist ( a b c )
    46.        ([color=BLUE]set[/color] a
    47.            ([color=BLUE]cond[/color]
    48.                (
    49.                    ([color=BLUE]getdist[/color]
    50.                        ([color=BLUE]strcat[/color] b [color=MAROON]" <"[/color]
    51.                            ([color=BLUE]rtos[/color] ([color=BLUE]set[/color] a ([color=BLUE]cond[/color] ( ([color=BLUE]eval[/color] a) ) ( c )))) [color=MAROON]">: "[/color]
    52.                        )
    53.                    )
    54.                )
    55.                (   ([color=BLUE]eval[/color] a)   )
    56.            )
    57.        )
    58.    )
    59.    ([color=BLUE]setq[/color] vr '(CMDECHO QAFLAGS)
    60.          va  ([color=BLUE]mapcar[/color] '[color=BLUE]getvar[/color] vr)
    61.    )
    62.    ([color=BLUE]mapcar[/color] '[color=BLUE]setvar[/color] vr '(0 1))
    63.    (_getdist '*len* [color=MAROON]"\nSpecify Length"[/color] 1.0)
    64.    (_getdist '*wid* [color=MAROON]"\nSpecify Width"[/color]  1.0)
    65.    ([color=BLUE]setq[/color] en ([color=BLUE]entlast[/color]))
    66.    ([color=BLUE]command[/color] [color=MAROON]"_.-insert"[/color] [color=MAROON]"$MyRectangle$"[/color] [color=MAROON]"_X"[/color] *len* [color=MAROON]"_Y"[/color] *wid*)
    67.    ([color=BLUE]princ[/color] [color=MAROON]"\nSpecify Insertion Point: "[/color])
    68.    ([color=BLUE]setvar[/color] 'CMDECHO 1)
    69.    ([color=BLUE]while[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]logand[/color] 1 ([color=BLUE]getvar[/color] 'CMDACTIVE)))
    70.        ([color=BLUE]command[/color] [color=BLUE]pause[/color])
    71.    )
    72.    ([color=BLUE]setvar[/color] 'CMDECHO 0)
    73.    ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]equal[/color] en ([color=BLUE]setq[/color] en ([color=BLUE]entlast[/color]))))
    74.        ([color=BLUE]command[/color] [color=MAROON]"_.explode"[/color] en [color=MAROON]""[/color])
    75.    )
    76.    ([color=BLUE]mapcar[/color] '[color=BLUE]setvar[/color] vr va)
    77.    ([color=BLUE]princ[/color])
    78. )
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-9 09:29 , Processed in 0.709318 second(s), 72 queries .

    © 2020-2025 乐筑天下

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