半听可乐 发表于 2012-12-14 09:18:58

阿然 发表于 2012-12-13 17:26 static/image/common/back.gif
虽然解决了,附上我按照gu版给的思路写的代码,争取顶到50楼看看GU版的代码。输入消防栓块名(可以使用*来代 ...

感谢关注!

wowan1314 发表于 2012-12-19 11:51:09

本帖最后由 wowan1314 于 2013-6-8 11:19 编辑

源码上传上来。我又略微调整了下。还有什么意见就楼主自己调整吧!

话说怎么还没50楼!!!

阿然 发表于 2012-12-19 17:32:05

Gu版,43楼了,离50楼也不远了,将就下代码贴出来瞅瞅

smartstar 发表于 2013-1-18 21:19:58

想看G版的源码!

半听可乐 发表于 2013-1-19 08:16:15

发一个单位上前辈写的相关程序,不带阴影显示交集的(这也是发帖的初衷),让高手来讨论,争取到50楼哈
;;****************************** HYDRAD.LSP ****************************
;;
;;For AutoCAD R14
;;
;;本程序显示消火栓保护半径.
;;
;;by Yu Bin
;;----------------------------------------------------------------------
;;
(ai_loadapp "FLUSPT" "ai_rtos" "ai_rtos.lsp")
;;
(if (null YB:HYDRAD_RAD) (setq YB:HYDRAD_RAD 25))
;;
;;========================== The Main Functions ========================
;;
(defun c:hydrad (/ cde blp omd ccl olderr ans ss ss1 rad n)
(setq cde (getvar "cmdecho")
      blp (getvar "blipmode")
      omd (getvar "osmode")
      ccl (getvar "cecolor")
)
;;
;; Internal error handler
;;
(defun hr_err (s)
(if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
)
(setvar "blipmode" blp)
(setvar "osmode" omd)
(setvar "cecolor" ccl)
(if ss1 (command "_.ERASE" ss1 ""))
(command "_.UNDO" "_END")
(setvar "cmdecho" cde)
(setq *error* olderr)
(princ)
)
;;
(setq olderr *error**error* hr_err)
(setvar "cmdecho" 0)
(command "_.UNDO" "_BEGIN")
(setvar "blipmode" 0)
(setvar "osmode" 0)
(setvar "cecolor" "11")
(setq rad (getreal (strcat "\n保护半径 (m) <" (ai_rtos YB:HYDRAD_RAD) ">: ")))
(if rad (setq YB:HYDRAD_RAD rad))
(initget "A")
(setq ans (getkword "\n全部A/<选择消火栓>: "))
(if (= ans "A")
    (setq ss (ssget "X" '((0 . "INSERT") (2 . "J_XHS1,J_XHS2"))))
    (setq ss (ssget '((0 . "INSERT") (2 . "J_XHS1,J_XHS2"))))
)
(if ss
    (progn
   (setq rad (* YB:HYDRAD_RAD 1000)
            ss1 (ssadd)
            loop T
            n 0
      )
      (repeat (sslength ss)
      (command "_.CIRCLE" (ai_val 10 (entget (ssname ss n))) rad)
      (ssadd (entlast) ss1)
      (setq n (1+ n))
      )
      (princ "\n按任意键结束.")
      (while loop
      (setq n (car (grread T)))
      (if (and (/= n 5) (/= n 12)) (progn
          (command "_.ERASE" ss1 "")
          (setq loop nil)
      ))
      )
    )
    (princ "\n未找到消火栓.")
)
(setvar "blipmode" blp)
(setvar "osmode" omd)
(setvar "cecolor" ccl)
(command "_.UNDO" "_END")
(setvar "cmdecho" cde)
(setq *error* olderr)
(princ)
)
;;======================================================================
(princ)

tgl121 发表于 2013-8-31 22:44:16

想的到就可以做得到

fzlinrong 发表于 2013-10-23 14:48:45

根据wowan1314 的思路用Vlisp重写了程序,可以选择图块作为消火栓的快名,同时支持动态块,速度明显快多了,115个消火栓在我的电脑上大约2~3秒,应该能满足要求。

fzlinrong 发表于 2013-10-23 14:51:18

快到50楼了,本来想设置回复可见,但不懂得如何设置,希望下载的能给个回复。谢谢大家。

fzlinrong 发表于 2013-10-23 14:53:28

程序是纯源码,希望各位大侠能对程序给个建议。以便完善代码。

tianyi1230 发表于 2013-12-17 16:21:23

学习各位跟帖前辈的经验。
页: 1 2 3 4 [5] 6
查看完整版本: 编程申请:以块中心画直径为25米的圆,圆的交集内填充阴影或颜色,鼠标左键单击退出…