半听可乐
发表于 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
学习各位跟帖前辈的经验。