Sds draggen

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
int sds_draggen (const sds_name ss, const char *prompt, int cursor, int (*myfunction)(sds_point point, sds_matrix mt), sds_point p);


機能
選択セットをの表示を更新する。
ユーザが選択セットをドラッグするようにうながす。
引数
  • ss : 選択セットの名前
  • *prompt : オプション。使用しない場合は null を指定。
  • cursor : カーソルのタイプ。(下表参照)
  • (*myfunction) : 機能へのポインタ。マウスが位置を変えるときに呼ばれる。
  • (point と mt) : UCS座標によるマウスの位置と4x4変換マトリクス。選択セットのドラッギング表示をアップデートするのに使用される。
  • p : 移動先の点
戻り値
成功なら RTNORM、失敗なら RTERROR、ユーザが機能を取り消すか、myfunction がRTERRORを返した場合は RTCAN。


カーソルタイプ
カーソル 意味
0 デフォルトカーソルを表示
1 カーソル非表示
2 図形選択ボックスカーソル


サンプル
// draghelper は別でなんかしら定義しとく。
static int sample_sds_draggen(struct sds_resbuf *rb){
  sds_name ss;
  sds_name ent;
  int ret = RTERROR;
  
  if( sds_entsel( "\nSelect entity to draw: ", ent, basePoint ) == RTNORM ){
    if (RTNORM == sds_ssadd(ent, NULL, ss)){
      sds_point end;
      ret = sds_draggen(ss, "\n新しい点を指示", 0, draghelper, end);
      if(ret == RTNORM)
        sds_printf( "\n%f %f %f", end[0], end[1], end[2] );
    }
  }
  return 1;
}