グラデーションをチェック [花子]
(必要や好みに応じてだが)グラデーションのところはSVG経由でやるのも手かもしれない、というのはよいが、所々に微妙にグラデーションを入れている図面なんかだと、いったいどこにどれくらいグラデーションを使ったのか、パッと把握しきれないことがある。…私の場合はあるんである。
と、いうわけで、思い切りやっつけだが、図面内のグラデーションをチェックするマクロ。どれくらい使う機会があるか分からないが、ともかく実験。
肝心のコードは以下。
と、いうわけで、思い切りやっつけだが、図面内のグラデーションをチェックするマクロ。どれくらい使う機会があるか分からないが、ともかく実験。
肝心のコードは以下。
!!************** !!グラデーションのチェック !!************** Ver.1.0 !! (C)臼田 隆行 !! 2009-02-08 !!************** !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!======================================================== !!macroname(グラデーションのチェック) !!title(図面内のグラデーションをチェック) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! %lpattern = GetLinePattern() %hpattern = GetHatchPattern() %pn = GetPage() %fn = CountFigsPage(%pn) %ga = nil %gn = 1 %cn = nil for %i = 1 to %fn step 1 %fd = GetFigDocument(%pn, %i) %ft = GetFigType(%fd) if %ft = "塗りつぶし" then %hatch = GetDataHatchPattern(%fd) if %hatch("グラデーション") = 1 then %ga(%gn) = %i %gn = %gn + 1 end if else if %ft = "合成図形" then %cn = %cn + 1 end if next %gn = %gn - 1 for %i = 1 to %gn step 1 %fd = GetFigDocument(%pn, %ga(%i)) %range = CalcFigRegion(%fd) %spx = GetX(%range("座標1")) - 0.5 %spy = GetY(%range("座標1")) - 0.5 %epx = GetX(%range("座標2")) + 0.5 %epy = GetY(%range("座標2")) + 0.5 %sp(%i) = #[%spx, %spy] %ep(%i) = #[%epx, %epy] next DisplayMode(1) TemporaryMode() DrawMode(3) HatchPattern(0, , , , , , , ) LinePattern(1, 2, , "R255G0B0", , , , , , ) for %i = 1 to %gn step 1 Box(%sp(%i), %ep(%i), , , ) next Message("グラデーションが" & %gn & "個ありました", 1) if %cn <> nil Message("解析できなかった合成図形が" & %cn & "個ありました") end if LinePattern(%lpattern) HatchPattern(%hpattern)
タグ:マクロ
2009-02-08 00:00
nice!(0)
コメント(0)
トラックバック(0)
コメント 0