CADとPython 09 if文と面積スタンプ

if文について

if文は分岐をつけるもので、非常に多く使用します。CADの場合の利用シーンとしては、オブジェクトタイプによって処理を行うかどうかなどがあります。

面積スタンプ

今回は面積スタンプを例にサンプルを作成しています。文字やグループなど面積が必要ない場合は、面積スタンプの処理を行わないというものです。

オブジェクトタイプなど、分岐ではソフトが設定している設定値が利用されます。詳しくは動画を見てください。

Vectorworksのサンプル


import vs

target = vs.FSActLayer() #対象をtargetという変数(受け皿)に入れる
# オブジェクトタイプを取得
target_type = vs.GetTypeN(target)
typeList = [3,4,5,6,21]


if target_type in typeList:
    area = vs.ObjAreaN(target) 
    tsubo = str(round(area / 3.3, 1)) + "坪" #小数点第一にして坪をつける
    m2 = str(round(area,1)) + 'm2' #小数点第一にして坪をつける

    #targetの中心座標を取得
    center = vs.HCenter(target) #中心座標をcenterと呼ぶ
    text = (m2 + '/' + tsubo) 
    
    #centerへ移動して面積を書く
    vs.MoveTo(center) #centerに移動する。
    vs.CreateText(text)

elif target_type == 11:
    vs.AlrtDialog('グループです')

else:
    vs.AlrtDialog('対称図形が適切ではありません')

ライノセラスのサンプル

# -*- coding: utf-8 -*-
import rhinoscriptsyntax as rs
# 対象の図形を選択
target = rs.GetObject("図形を選択してください")
# オブジェクトタイプを取得
target_type = rs.ObjectType(target)

# オブジェクトタイプが8(Surface or single-face brep)の場合
if target_type == 8:
    # 面積を計算(単位は平方メートル)
    area = rs.Area(target)

    tsubo = str(round(area / 3.3, 1)) + "坪" #小数点第一にして坪をつける
    m2 = str(round(area,1)) + 'm2' #小数点第一にして坪をつける
    

    center = rs.SurfaceAreaCentroid(target)[0]
    text = "{:.2f} m²".format(area)
    
    #centerにtextdotを配置
    rs.AddTextDot(text, center)
else:
    rs.MessageBox("サーフェスまたはシングルフェースのBREPではないため、中心座標を計算しません。")

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です