| 
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
      
 阵列就是X,Y两方向的实体的拷贝组合。
  (defun c:tt()
   (if (and (setq xnum (getint "\nX方向数量<退出>:"))
            (setq xdis (getreal "\nX方向间距<退出>:"))
            (setq ynum (getint "\nY方向数量<退出>:"))
            (setq ydis (getreal "\nY方向间距<退出>:"))
            (setq ss (ssget))
      )
    (progn
      (setq mat0 (xdrx_matrix_identity 3)
            vx (getvar "ucsxdir")
            vy (getvar "ucsydir")
            vec_x (xdrx_vector_product vx xdis);;向量(方向)乘以距离
            vec_y (xdrx_vector_product vy ydis);;阵列的X方向Y方向同当前的UCS
      )
      (setq i 1)
      (xdrx_setmark);;设置标记为以后取得新生成实体选择集
      (repeat (1- xnum)
         (setq mat_x (xdrx_matrix_setTransLation mat0 (xdrx_vector_product vec_x i));;每次拷贝的平移变换矩阵
               i (1+ i)
         )
         (xdrx_entity_transformedcopy ss mat_x);;拷贝变换(留下原来的选择集)
      )
      (setq ss1 (xdrx_getss);;获取新生成的实体选择集
            ss (xdrx_pickset_union ss ss1);;加上原来的选择集,准备Y方向变换
      )
      (setq i 1)
      (repeat (1- ynum)
         (setq mat_y (xdrx_matrix_setTransLation mat0 (xdrx_vector_product vec_y i))
               i (1+ i)
         )
         (xdrx_entity_transformedcopy ss mat_y)
      )
    )
  )
  (princ)
)
 |