陈亚娣
发表于 2013-6-21 16:12:19
;;内插高程
(defun c:zgx()
(bl_c)
(co_lt)
(setq osvar (getvar "osmode"))
(cond ((= pz nil) (setvar "osmode" 512))
((= pz 1) (setvar "osmode" 8))
((= pz 2) (setvar "osmode" 4))
);cond
(initget 128)
(setq p1 (getpoint "\nN 捕捉模式/<选择一条等高线>: "))(PRINT)
(while (and (/= p1 nil) (/= (type (list 0 0)) (type p1)))
(if (or (= p1 "n") (= p1 "N")) (setq pz (getint "1 节点/2 圆心/<最近点>:")))
(cond ((= pz 1) (setvar "osmode" 8))
((= pz 2) (setvar "osmode" 4))
((= pz nil) (setvar "osmode" 512))
);cod
(initget 128)
(setq p1 (getpoint "\nN 捕捉模式/<选择一条等高线>: "))(PRINT)
);while
(setq p2 (getpoint "\n选择另一条等高线: "))(PRINT)
(setvar "osmode" 0)
(setq p3 (getpoint "\n选择选择高程注记点: "))(PRINT)
(setq h1 (caddr p1))
(setq h2 (caddr p2))
(setq d (distance (list (car p1) (cadr p1)) (list (car p2) (cadr p2))))
(setq d1 (distance (list (car p1) (cadr p1)) (list (car p3) (cadr p3))))
(setq h (- h2 h1))
(setq h (* h d1))
(setq h (/ h d))
(setq h (+ h1 h))
(setq p3 (list (car p3) (cadr p3) h))
(setq h (rtos h 2 1))
(if (tblsearch "layer" "gcd")
(setvar "clayer" "GCD")
(command "layer" "m" "GCD" "c" 1 "" "")
);if
(command "insert" "gc200" p3 "xyz" (/ blc 1000.0) (/ blc 1000.0) (/ blc 1000.0) 0)
(setq ent1 (entlast))
(setq ent (entget ent1))
(b_m "202101")
(command "text" (list (+ (car p3) 2.2) (- (cadr p3) 2) (caddr p3)) (* 2 (/ blc 1000.0)) "0"h)
(setq ent2 (entlast))
(setq ent (entget ent2))
(b_m "202111")
(command "RESUMEGCD" ent1 ent2 "")
(setvar "clayer" "0")
(setvar "osmode" osvar)
(princ)
);defun
;;------------------------------------------------------------------------------------
;;比例尺函数
(defun bl_c()
(if (<= (setq blc (getvar "userr1")) 0)
(progn
(setq blc (getint"\n图形比例尺1:<500>:"))
(if (= blc nil) (setq blc 500.0) (setq blc (* 1.0 blc)))
(setvar "userr1" blc )
(setvar "ltscale" (/ blc 1000.0))
);progn
);if
);defun
;;;-------------------------------------------------------------------
;颜色线型设置函数
(defun co_lt()
;;关闭编组选择
(if (/= (getvar "PICKSTYLE") 0) (setvar "PICKSTYLE" 0))
;;设定新对象的颜色为缺省颜色
(if (/= (getvar "cecolor") "BYLAYER") (setvar "cecolor" "BYLAYER"))
;;设定新对象的线型为连续
(if (/= (getvar "celtype") "CONTINUOUS") (setvar "celtype" "CONTINUOUS"))
);defun
;;-----------------------------------------------------------------------------
;;设置编码函数
(defun b_m(bm)
(setq app_x
(list
(list -3
(list "SOUTH"
(cons 1000 bm)
);list
);list
);list
);setq
(setq ent (append ent app_x))
(entmod ent)
);defun
461045462
发表于 2013-6-22 07:05:09
陈亚娣 发表于 2013-6-21 16:12 static/image/common/back.gif
;;内插高程
(defun c:zgx()
(bl_c)
谢谢楼上的关注!
先收藏了,等会试试,学习学习。
祝周末快乐!
谢谢!
清风明月名字
发表于 2013-6-22 10:39:56
本帖最后由 清风明月名字 于 2013-6-22 10:58 编辑
004的代码,建立了GCD图层后,可以计算得出结果,但结果是错误的,有严重误差,似乎是没有将过程纯化为平面问题,而在三维立体与平面之间摇摆不写,造成计算过程有误。最好是将数值转化为XY平面中的问题,再来算高程,公式就简单化了,也不至于出错
soly2006
发表于 2013-6-22 12:14:55
看能否达你所要:
南方cass两种情况加高程点--源码,运行视屏
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90507&fromuid=351467
461045462
发表于 2013-6-22 17:50:22
soly2006 发表于 2013-6-22 12:14 static/image/common/back.gif
看能否达你所要:
南方cass两种情况加高程点--源码,运行视屏
http://bbs.mjtd.com/forum.php?mod=viewth ...
谢谢楼上的关注!
我去看看
谢谢!
周末愉快