乐筑天下

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

[编程交流] 超链接?

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 14:14:14 | 显示全部楼层 |阅读模式
首先,我对编写lisp非常陌生:不确定:我有一个小的lisp,用来更改lwpolyline的z值,我有一个超链接设置,当我悬停在lwpolyline上时,它会显示该值。我实际上没有链接到任何东西。
 
所以我的问题是,我能去掉超链接框中的文字吗?超链接框中写着“Ctrl+单击以跟随链接”?
 
  1. ;Zdepth lisp
  2. ;Moves a single selected polyline Z coordinate to user
  3. specified elevation
  4. ;Created 7/9/09 DJM
  5. ( defun c:RX (/ a x b c d a1 )
  6. (setvar "cmdecho" 1)
  7. (setq a(entget (car (entsel))))
  8. (setq x(cdr (assoc -1 a)))
  9. (setq b(assoc 38 a))
  10. (setq c(getreal "\nENTER NEW Z VALUE"))
  11. (setq d(cons (car b ) c))
  12. (setq a1(subst d b a))
  13. (entmod a1)
  14. (setq c(rtos c 2 3))
  15. (command "-hyperlink" "i" "o" x "" "current drawing" "none" c)
  16. )
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:26:15 | 显示全部楼层
 
我只看到Z长度或厚度,其他什么都看不到。
我没有看到你提到的超链接框中的文本。
 
我还注意到,如果对象的z值实际上不同,则为超链接输入的任何值都将不正确。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 14:38:56 | 显示全部楼层
谢谢你看。它可能是显示或不显示该文本的超链接设置。
 
超链接值是为z高程移动键入的任何值,因此在使用此例程时,只要z高程发生变化,超链接值就应该发生变化。
 
哦,顺便提一下,我正在WIN XP系统上使用autocad 2008。我不确定这是否有什么不同,但我之前没有提到。
151418keh11npwbhe1ne3b.jpg
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:40:06 | 显示全部楼层
 
最初我是在2004年测试的。自从你提出了这个版本的想法,我在2009年也测试了它,是的,我现在看到了信息。
在这个阶段不确定如何摆脱它。我会检查命令和任何相关变量,看看这是否可以更改。如果我先找到什么,我会引起你的注意。
 
另请查看此链接:
http://www.cadtutor.net/forum/showthread.php?t=36273
它做了一些我认为你试图做的事情。
我不太确定,不过还是看一看。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:48:47 | 显示全部楼层
我不确定是否可以删除Ctrl+click消息,但这里有一种替代方法:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:rx [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ent Obj zVal[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b]
  4.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
  5.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entsel[/color][/b] [b][color=#ff00ff]"\nSelect LWPolyline: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  6.      [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]ENAME [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] ent[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7.             [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#ff00ff]"AcDbPolyline"[/color][/b]
  8.                        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ObjectName[/color][/b]
  9.                          [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] ent[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  10.               [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Object is not an LWPOLYLINE **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  11.            [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Nothing Selected **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  12. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] zVal [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nEnter New Z Value: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  13.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
  14.      [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Elevation[/color][/b] Obj zVal[b][color=RED])[/color][/b]
  15.      [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b]
  16.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Hyperlinks[/color][/b] Obj[b][color=RED])[/color][/b]
  17.          [b][color=RED]([/color][/b][b][color=BLUE]vl-princ-to-string[/color][/b] zVal[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  18. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  19.             
  20.             

 
如果可以的话,我想提出几点建议:
 
[列表]
  • 为变量使用更多描述性名称,这使代码10x更易于阅读和理解-尤其是在您第一次学习时。
    [/列表]
    [列表]
  • 使用条件语句,例如IF或WHILE循环,以允许用户输入为空,或错过单击-否则将导致错误。
    [/列表]
    [列表]
  • 使用“命令”功能时,包括语言兼容性前缀,即:
    [/列表]
    1. (command "_.line" (list 0 1 0) (list 2 3 4) "")

     
    [列表]
  • 在本地化变量方面做得很好,许多新的LISP'er都忽略了这一点,这可能会带来很多麻烦。。
    如果你还有其他问题,尽管问
     
  • 回复

    使用道具 举报

    1

    主题

    3

    帖子

    2

    银币

    初来乍到

    Rank: 1

    铜币
    5
    发表于 2022-7-6 14:57:14 | 显示全部楼层
    谢谢你的指点,我喜欢关于变量更具描述性的部分。
     
    根据您那里的代码,当我第一次编辑Z标高时,超链接是正确的。当我使用相同的例程再次更改高程时,超链接信息没有更改。当然,“Ctrl+click-to-follow链接”仍然存在。
     
    谢谢你的帮助。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 15:05:52 | 显示全部楼层
    我不允许重新编辑超链接,将更新代码。
     
    是的,正如我在上一篇文章中所说的,我认为你不能删除Ctrl+click消息。
     
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 15:18:57 | 显示全部楼层
    代码已更新,假设每个对象有一个超链接:
     
    1. (defun c:rx (/ ent Obj zVal)
    2. (vl-load-com)
    3. (while
    4.    (progn
    5.      (setq ent (car (entsel "\nSelect LWPolyline: ")))
    6.      (cond ((eq 'ENAME (type ent))
    7.             (if (not (eq "AcDbPolyline"
    8.                        (vla-get-ObjectName
    9.                          (setq Obj (vlax-ename->vla-object ent)))))
    10.               (princ "\n** Object is not an LWPOLYLINE **")))
    11.            (t (princ "\n** Nothing Selected **")))))
    12. (if (setq zVal (getdist "\nEnter New Z Value: "))
    13.    (progn
    14.      (vla-put-Elevation Obj zVal)
    15.      (if (zerop
    16.            (vla-get-Count
    17.              (setq hlnk
    18.                (vla-get-Hyperlinks Obj))))
    19.        (vla-add hlnk  (vl-princ-to-string zVal))
    20.        (vlax-for lnk hlnk
    21.          (vla-put-url lnk zVal)))))
    22. (princ))
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-5 03:09 , Processed in 0.685372 second(s), 70 queries .

    © 2020-2025 乐筑天下

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