TheyCallMeJohn 发表于 2022-7-5 23:40:05

提取点信息f

有人知道如何在没有CADMEP信息的情况下从CADMEP实体中提取点信息吗?
 
我们的客户给我们这些文件,我们必须在每个衣架上放置积木。提取坐标以填充块将节省大量时间。
 

LibertyOne 发表于 2022-7-5 23:50:37

在这里的另一个论坛上讨论了这个话题:
http://www.theswamp.org/index.php?topic=45166.0
也许这会有帮助。。。

TheyCallMeJohn 发表于 2022-7-5 23:54:32

 
我忘了说谢谢LibertyOne!

ymg3 发表于 2022-7-6 00:05:59

他们叫我约翰,
 
由于您正在获取此列表,“点”很可能是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公司

TheyCallMeJohn 发表于 2022-7-6 00:12:04

所以我想出了一种方法来解决这些问题,就像你推荐的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))                               
)       

ymg3 发表于 2022-7-6 00:14:30

他们叫我约翰,
 
你越来越近了。帮不了你太多了,因为我只有“普通简”cad。
 
但从符号上看,似乎有两种不同类型的衣架。
 
ymg公司

TheyCallMeJohn 发表于 2022-7-6 00:25:59

我在周围做实验,在我改变这个之后,它起了作用。。。。
 

(if (vl-string-search "hanger" unitdecrp)

 
为此:
 

(if (/= (vl-string-search "hanger" unitdecrp) nil)

 
想想看吧
 
哦,还有Ymg,我一直在使用Vanillia Autocad,但我应该知道如何从CadDuct数据库中提取信息*刘海撞墙*

ymg3 发表于 2022-7-6 00:30:47

他们叫我约翰,
 
这两者通常是等价的。我们错过了什么?所以也许我们应该
 
ymg公司

TheyCallMeJohn 发表于 2022-7-6 00:38:08

我也这么认为,但我想这到底是怎么回事,我一般不知道我在做什么,我会试试看!(…并不是真的期望它能工作)。然而,唉,它确实奏效了。
 
 
等等,有手册吗?!

TheyCallMeJohn 发表于 2022-7-6 00:40:48

所以我使用了一些对我来说很陌生的命令,我遇到了一个奇怪的问题。我使用一个边界框来确定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]
查看完整版本: 提取点信息f