このページについて
 
このページは、mura's homeAutoCAD掲示板 で、当方の発言(書込み)がある以下の掲示板の内容です。
http://www.mura.sh/bbs/wwwbbs.cgi?print+200211/02110086.txt
 
タイトルおよび質問内容は上記より引用しています。
 
引用した質問内容は、バックカラーが

   

となっています。
 
当方の発言は、バックカラーが

   

となっています。
 
その他の著作権者の掲載許可を得ていない発言内容は削除(リンクを除く)しています
 
また、当方では、削除部分の正当な著作権保持者を判断出来ませんので、
ご連絡を頂いても、復活させることは出来ません。ご了承下さい。
 
 
掲示板の著作権について
 
掲示板への匿名の書き込みであっても、著作権(著作権法)で保護されています。
また、判例(確定した判決)もあります。
 
裁判所 判例検索システム

ホテルジャンキーズ事件

知的財産裁判例
知的財産裁判例
平成13(ワ)22066  著作権 民事訴訟
平成14年04月15日 東京地方裁判所
全文 控訴
付帯控訴
知的財産裁判例
知的財産裁判例
平成14(ネ)2887  著作権 民事訴訟
平成14年10月29日 東京高等裁判所
全文 確定

ただし、あらかじめ取り決めがある場合は、その取り決めが優先します
 ※たとえば、OKWave の掲示板 (利用規約/第10条(投稿内容の利用権))

 
 
 

VBAの"Normal"プロパティについて

AK [HOMEPAGE] 2006/01/19(木) 06:23:13

手持ち(2000i)のヘルプには、
『Normal プロパティ:図形の 3D 法線単位ベクトルを指定します。/読み書き可能』の他に、
OCS(オブジェクト座標系)以外に特別な記載はないのですが、
円弧の場合、"Normal"プロパティを変更をしても期待した結果となりません。

Normal=(0,0,1)は、3時の方向が角度計測(StartAngleなど)の基点で、
Normal<>(0,0,1)は、この基点が12時となっている為と推察しましたが、
何かオプション等の設定が必要なのでしょうか?
以下は確認用サンプルプログラムです。

Public Sub NormalPropertie_Test()
Dim Arcobj         As AcadArc
Dim Copyobj1       As AcadArc
Dim Copyobj2       As AcadArc
Dim Copyobj3       As AcadArc
Dim Copyobj4       As AcadArc
Dim Center(0 To 2) As Double
Dim Radius         As Double
Dim StartAngle     As Double
Dim EndAngle       As Double
Dim CopyobjNormal(0 To 2) As Double
Dim Pi             As Double
    Pi = 4 * Atn(1) 'π (180度 = pi = 4 * Atn(1))
    MsgBox "円弧を作成します  ", vbInformation, "NormalPropertie_Test"
    Center(0) = 0: Center(1) = 0: Center(2) = 0:
    Radius = 1
    StartAngle = 0: EndAngle = Pi
    Set Arcobj = ActiveDocument.ModelSpace.AddArc(Center, Radius, StartAngle, EndAngle)
    'ズームなど
    ActiveDocument.SendCommand "_zoom" & vbCr & "_e" & vbCr
    ActiveDocument.Regen acActiveViewport
    '
    MsgBox "この円弧の Normal プロパティは" & vbCr & vbCr & _
           "   X = " & Arcobj.Normal(0) & vbCr & _
           "   Y = " & Arcobj.Normal(1) & vbCr & _
           "   Z = " & Arcobj.Normal(2) & vbCr & vbCr & _
           "この円弧を4個コピーして、Normal プロパティを変更します" & vbCr & _
           "  ※ Y軸周りに回転させた状態となります" & vbCr & _
           "     (回転角 30,45,60,90度)", _
            vbInformation, "NormalPropertie_Test"
    'Pi/6
    Set Copyobj1 = Arcobj.Copy()
    CopyobjNormal(0) = -0.5: CopyobjNormal(1) = 0: CopyobjNormal(2) = 0.8660254:
    Copyobj1.Normal = CopyobjNormal
    Copyobj1.Color = acRed
    Copyobj1.Update
    'Pi/4
    Set Copyobj2 = Arcobj.Copy()
    CopyobjNormal(0) = -0.70710678: CopyobjNormal(1) = 0: CopyobjNormal(2) = 0.70710678:
    Copyobj2.Normal = CopyobjNormal
    Copyobj2.Color = acCyan
    Copyobj2.Update
    '2Pi/6
    Set Copyobj3 = Arcobj.Copy()
    CopyobjNormal(0) = -0.8660254: CopyobjNormal(1) = 0: CopyobjNormal(2) = 0.5:
    Copyobj3.Normal = CopyobjNormal
    Copyobj3.Color = acGreen
    Copyobj3.Update
    'Pi/2
    Set Copyobj4 = Arcobj.Copy()
    CopyobjNormal(0) = -1: CopyobjNormal(1) = 0: CopyobjNormal(2) = 0:
    Copyobj4.Normal = CopyobjNormal
    Copyobj4.Color = acMagenta
    Copyobj4.Update
    'ズームなど
    ActiveDocument.SendCommand "_zoom" & vbCr & "_e" & vbCr
    ActiveDocument.Regen acActiveViewport
    MsgBox "[オブジェクト プロパティ管理] と" & vbCr & _
           "[3D オービット] コマンドで確認してみてください", vbInformation, "NormalPropertie_Test"
End Sub

Jo [HOMEPAGE] 2006/01/19(木) 08:53:24

著作権者の許可を得ていないため削除
 
 

 
 

 
 
 
 
 
 
 

AK [HOMEPAGE] 2006/01/19(木) 19:57:59

≪ 解決 ≫

Joさん回答ありがとうございます。
ヘルプの、「任意の軸アルゴリズム」と
「オブジェクト座標系(OCS)」を見てみました。

図面データベース(および DXF ファイル)内のスペースを節約するためですか・・・
新規にオブジェクトを作成した場合ならともかく、
既存オブジェクトのプロパティを変更した場合なら、
XY軸とも確定できるはずですが、仕様なら仕方ありません。
オブジェクトを回転させることが目的でなく、
プログラム中で仮に作成するオブジェクトが、
予想外の表示となったためお伺い致しました。

任意の軸で目的が達成できますので、
これにて解決と致します。