所以我使用了一些对我来说很陌生的命令,我遇到了一个奇怪的问题。我使用一个边界框来确定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))
- )
- )
- )
|