找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1020|回复: 2

[求助] 求助相同的重叠文字和字符窜变色的LSP

[复制链接]
发表于 2015-6-12 18:03:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
求助重叠的文字和字符窜,当文字和字符窜重叠相同时,让这样重叠相同的字和字符串变色变色的LSP,(如PKPM计算书中的字符窜),麻烦哪位朋友有这样的LSP,或请高手编写一个
:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2015-6-14 12:51:40 | 显示全部楼层
下面是个LSP源码,是否可以按这个思路改下,由于本人不懂,所以请请高手编写一个重叠相同的字和字符串变色变色的LSP,万分感谢

(defun c:max (/              ss      ename   i%      ent     string  maxlist1
              x              y              h              ss1     ename1  string1 maxlist2
              n%      str1    str2    str3    newstr
             )
  (command "_.undo" "begin")
  (command "_.color" "")
  (setq dimzin0 (getvar "dimzin"))
  (setq        ss (ssget (list        (cons 0 "TEXT")
                        (cons 62 5)
                  )
           )
  )
  (setq i% 0)
  (while (setq ename (ssname ss i%))
    (setq ent         (entget ename)
          string (cdr (assoc 1 ent))
    )
    (setq maxlist1 (string->maxlist string))
    (setq x (cadr (assoc 10 ent))
          y (caddr (assoc 10 ent))
          h (/ (cdr (assoc 40 ent)) 2)
    )
    (setq ss1 (ssget "X"
                     (list
                       (cons -4 "<AND")
                       (assoc 0 ent)
                       (assoc 50 ent)
                       (cons -4 "<NOT")
                       (cons 62 5)
                       (cons -4 "NOT>")
                       (cons -4 ">=,>=,*")
                       (list 10 (- x h) (- y h) 0)
                       (cons -4 "<=,<=,*")
                       (list 10 (+ x h) (+ y h) 0)
                       (cons -4 "AND>")
                     )
              )
    )                               
    (setq n% 0)
    (while (setq ename1 (ssname ss1 n%))
      (setq string1 (cdr (assoc 1 (entget ename1))))
      (setq maxlist2 (string->maxlist string1))
      (setq maxlist1 (mapcar 'max maxlist1 maxlist2))
      (entdel ename1)
      (setq n% (1+ n%))
    )
    (setvar "dimzin" 8)
    (setq str1 (rtos (car maxlist1) 2 2))
    (if        (cadr maxlist1)
      (setq str2 (rtos (cadr maxlist1) 2 2))
    )
    (if        (caddr maxlist1)
      (setq str3 (rtos (caddr maxlist1) 2 2))
    )
    (cond ((wcmatch string "*-*-*")
           (setq newstr (strcat str1 "=" str2 "=" str3))
          )
          (t
           (setq newstr str1)
          )
    )
    (setq ent (subst (cons 1 newstr) (assoc 1 ent) ent))
    (entmod ent)
    (setq i% (1+ i%))
  )
  (setvar "dimzin" dimzin0)
  (command "_.undo" "end")
)


(defun string->maxlist
       (string / n str Posit1 posit2 str1 str2 str3 maxlist)
  (setq n 1)
  (while (if (wcmatch (substr string n 1) "@")
           (setq n (1+ n))
         )
  )
  (if (setq posit1 (vl-string-position (ascii "-") string))
    (progn
      (setq str1 (atof (substr string n  Posit1))
            str         (substr string (+ Posit1 2))
      )
      (if (setq posit2 (vl-string-position (ascii "-") str))
        ;*-*-*
        (setq str2 (atof (substr str 1 Posit2 ))
              str3 (atof (substr str (+ Posit2 2)))
        )
        ;*-*
        (setq str2 (atof str))
      )
    )
    ;无"-"
    (setq str1 (atof (substr string n)))
  )
  (foreach i (list str3 str2 str1) (if i (setq maxlist (cons i maxlist))))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-14 12:54:58 | 显示全部楼层
下面是个选相同的字改粉色源码,是否可以把上面这两源码,按这2个思路改下,由于本人不懂,所以请高手编写一个重叠相同的字和字符串变色变色的LSP,万分感谢

(defun c:gt1(/ sstext text_sn cpl i)
(setq sstext (ssget '((0 . "text"))))
(if sstext
(progn
(setq i 0)
(repeat (sslength sstext)
(setq text_sn (ssname sstext i)
      plst (LM:GetTextBox text_sn 0)
      cpl (ssget "CP" plst '((0 . "text")))
)
(if (> (sslength cpl) 1)
(vla-put-color (vlax-ename->vla-object text_sn) 6)
)
(setq i (1+ i))
))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-10 07:27 , Processed in 0.172383 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表