提取点信息f
有人知道如何在没有CADMEP信息的情况下从CADMEP实体中提取点信息吗?我们的客户给我们这些文件,我们必须在每个衣架上放置积木。提取坐标以填充块将节省大量时间。
在这里的另一个论坛上讨论了这个话题:
http://www.theswamp.org/index.php?topic=45166.0
也许这会有帮助。。。
我忘了说谢谢LibertyOne! 他们叫我约翰,
由于您正在获取此列表,“点”很可能是hanger对象的属性。
确认问题:
(vlax-dump-object (vlax-ename->vla-object (car (entsel "\nSelect Object:"))) t)
如果它是一个属性,那么您可以通过以下方式访问它:
(vlax-get-property (vlax-ename->vla-object (car (entsel "\nSelect Object:"))) 'points)
以上假设points是特性名称。然后需要解析
无论你得到什么回报。
ymg公司 所以我想出了一种方法来解决这些问题,就像你推荐的Ymg3一样。如果我一行一行地复制和粘贴代码,但当我尝试在一组项目上运行代码时,这似乎是可行的。它走错了方向。我在这里上传了一个SWF和dwg。展示正在发生的事情。
(setq pl_set (ssget '((0 . "MAPS_SOLID"))))
(setq pl_set_lgth (SSLENGTH pl_set))
(setq pl_item 0)
(repeat pl_set_lgth
(setq en (SSNAME pl_set pl_item))
(setq entvla (vlax-Ename->Vla-Object en))
(setq unitdecrp (vlax-get entvla 'description))
(if (vl-string-search "hanger" unitdecrp)
(progn
(setq unitpoint (vl-string-right-trim ";" (substr (vlax-get entvla 'points) 12)))
(command "insert" pl_block unitpoint "1" "1" "0")
)
(princ "\n Invalid Objects")
)
(setq pl_item (+ pl_item 1))
) 他们叫我约翰,
你越来越近了。帮不了你太多了,因为我只有“普通简”cad。
但从符号上看,似乎有两种不同类型的衣架。
ymg公司 我在周围做实验,在我改变这个之后,它起了作用。。。。
(if (vl-string-search "hanger" unitdecrp)
为此:
(if (/= (vl-string-search "hanger" unitdecrp) nil)
想想看吧
哦,还有Ymg,我一直在使用Vanillia Autocad,但我应该知道如何从CadDuct数据库中提取信息*刘海撞墙* 他们叫我约翰,
这两者通常是等价的。我们错过了什么?所以也许我们应该
ymg公司 我也这么认为,但我想这到底是怎么回事,我一般不知道我在做什么,我会试试看!(…并不是真的期望它能工作)。然而,唉,它确实奏效了。
等等,有手册吗?! 所以我使用了一些对我来说很陌生的命令,我遇到了一个奇怪的问题。我使用一个边界框来确定MAP_实体风管带的方向,但它似乎取第一个的方向,而不检查其余的方向。或者我的代码出错了。。。。(很可能)。有什么建议吗?
((= hngr_trgt_obj "MAPS_SOLID")
(progn
(princ "\n This is MAP Solid. Selected layer will be ignored.\N Select hangers to populate:")
(setq pl_set (ssget '((0 . "MAPS_SOLID"))))
(setq pl_set_lgth (SSLENGTH pl_set))
(setq pl_item 0)
(repeat pl_set_lgth
(setq en (SSNAME pl_set pl_item))
(setq entvla (vlax-Ename->Vla-Object en))
(setq unitdecrp (vlax-get entvla 'description))
(cond
((or (/= (vl-string-search "hanger" unitdecrp) nil)(and (= (vl-string-search "Hanger Strap" unitdecrp) nil) (/= (vl-string-search "Hanger" unitdecrp) nil))(/= (vl-string-search "SINGLE STRAP" unitdecrp) nil))
(progn
(setq unitpoint_orig (vl-string-right-trim ";" (substr (vlax-get entvla 'points) 12)))
(if (and(or (= Z_pref "Y")(= Z_pref "y"))(/= Z_height nil))
(progn
(setq unitpoint_mod (comma_pull unitpoint_orig "REAL_NUM"))
(setq unitpoint (list (car unitpoint_mod) (cadr unitpoint_mod) (caddr Z_height)))
)
(setq unitpoint (comma_pull unitpoint_orig "REAL_NUM"))
)
(setq unitpoint_lst (append unitpoint_lst (list unitpoint)))
)
)
((or (/= (vl-string-search "Hanger Strap" unitdecrp) nil)(/= (vl-string-search "Strap" unitdecrp) nil)(/= (vl-string-search "STRAP" unitdecrp) nil))
(progn
(setq unitpoint_orig (vl-string-right-trim ";" (substr (vlax-get entvla 'points) 12)))
(if (and(or (= Z_pref "Y")(= Z_pref "y"))(/= Z_height nil))
(progn
(setq unitpoint_mod (comma_pull unitpoint_orig "REAL_NUM"))
(setq unitpoint (list (car unitpoint_mod) (cadr unitpoint_mod) (caddr Z_height)))
)
(setq unitpoint (comma_pull unitpoint_orig "REAL_NUM"))
)
(setq unit_endsizes (vlax-get entvla 'endsize))
(setq x_pos (vl-string-search "x" unit_endsizes))
(setq duct_width (atoi (substr unit_endsizes 1 x_pos)))
(vla-GetBoundingBox entvla 'minpoint 'maxpoint)
(setq minpointlist (vlax-safearray->list minpoint))
(setq x_coord_min (car minpointlist))
(setq y_coord_min (cadr minpointlist))
(setq maxpointlist (vlax-safearray->list maxpoint))
(setq x_coord_max (car maxpointlist))
(setq y_coord_max (cadr maxpointlist))
(setq pnt_angle (RTD (angle (list x_coord_min y_coord_min)(list x_coord_max y_coord_max))))
(setq pnt_angle_R (angle (list x_coord_min y_coord_min)(list x_coord_max y_coord_max)))
(cond
((and (>= pnt_angle 40.0)(<= pnt_angle 50.0))
(progn
(setq delta_x (* (cos pnt_angle_R) (/ duct_width 2)))
(setq delta_y (* (sin pnt_angle_R) (/ duct_width 2)))
(setq unitpoint_1 (list (+ (car unitpoint) delta_x) (+ (cadr unitpoint) delta_y) (caddr unitpoint)))
(setq unitpoint_2 (list (- (car unitpoint) delta_x) (- (cadr unitpoint) delta_y) (caddr unitpoint)))
)
)
((> pnt_angle 50.0)
(progn
(setq unitpoint_1 (list (car unitpoint) (+ (cadr unitpoint) (/ duct_width 2)) (caddr unitpoint)))
(setq unitpoint_2 (list (car unitpoint) (- (cadr unitpoint) (/ duct_width 2)) (caddr unitpoint)))
)
)
((< pnt_angle 50.0)
(progn
(setq unitpoint_1 (list (+ (car unitpoint) (/ duct_width 2)) (cadr unitpoint) (caddr unitpoint)))
(setq unitpoint_2 (list (- (car unitpoint) (/ duct_width 2)) (cadr unitpoint) (caddr unitpoint)))
)
)
)
(setq unitpoint_lst (append unitpoint_lst (list unitpoint_1)))
(setq unitpoint_lst (append unitpoint_lst (list unitpoint_2)))
)
)
(t (princ "\n Invalid Objects"))
)
(setq pl_item (+ pl_item 1))
)
)
)
页:
[1]