■ LISP関数カタログ ****************************** ファイル : BlkInLsp.lsp 作成日時 : 2024/12/23 15:58:47 *********************************************** ■ -------------------------------------------------- □ _ClearClipBoardText -------------------------------------------------- □ _GetClipBoardText -------------------------------------------------- □ _SetClipBoardText text -------------------------------------------------- □ 3dplist ary 配列を 3D-POINT のリストに -------------------------------------------------- □ angequal ang1 ang2 fuzz 傾斜角度(ラジアン)が同じか(方向は問わない) -------------------------------------------------- □ attval entName tagName value 属性読み出し、変更 value = nil : 読み出し -------------------------------------------------- □ attval2 entName tagName1 tagName2 value1 value2 属性読み出し、変更(2個版) value = nil : 読み出し -------------------------------------------------- □ BulgeToArc p1 p2 bulge Bulge -> Arc -------------------------------------------------- ■ c:bcopy ブロックまたは TEXT をコピー -------------------------------------------------- ■ c:bcut ブロックに交差する LINE をカット、または指示した LINE をカット -------------------------------------------------- ■ c:berase ブロックを削除、または指示した LINE をカット -------------------------------------------------- ■ c:bline 現在の画層が WIRE 画層のときは、電気配線作成(水平、垂直線分のみ、交点シンボル処理) 上記以外は、通常の線分を作成(斜め線分も作成可能) 2024/12/18 変更 -------------------------------------------------- ■ c:BlkInLsp PASTECLIP 終了待ち Enter での繰り返しは不可(最後のコマンド "PASTE" が動く) -------------------------------------------------- ■ c:blPf 配線のピッチを等間隔に変更 -------------------------------------------------- ■ c:bmark 交点マークを反転 -------------------------------------------------- ■ c:bmove ブロック、LINE、POLYLINEの1辺、TEXT を移動 -------------------------------------------------- ■ c:bPt 複数ブロックの水平、または垂直位置を合わせる -------------------------------------------------- ■ c:dwgrun_blockcut DwgRun.exe から呼ばれる ブロックカット 2024/12/14 -------------------------------------------------- ■ c:entfill 図形を指定方向にコピー -------------------------------------------------- ■ c:lldr 線分に片矢印を追加(dimscale 基準) 2024/07/17 -------------------------------------------------- ■ c:LNFILL 表の横または横の線分2だけを上下、左右に指定回数コピー -------------------------------------------------- ■ c:txClip 選択した文字列をクリップボードにコピー -------------------------------------------------- ■ c:txfill 先頭2つまたは1つの TEXT を指定方向にコピー -------------------------------------------------- ■ c:txgClip LINE, LWPOLYLINE で作成された表内の TEXT をクリップボードにコピー -------------------------------------------------- ■ c:txgg TEXT を格子内の左、中、右に整列(TEXT の基点は変更される) 2024/12/21 枠からはみ出た TEXT の位置が間違うを修正 -------------------------------------------------- ■ c:txgPaste クリップボードの文字列を LINE, LWPOLYLINE で作成された表内に配置 2024/12/21 新規作成の文字高さの自動取得を追加 既存 TEXT が無い時は、上の行を探すを復活 まったく無いときは、左中で作成 -------------------------------------------------- ■ c:txgSPC 線分(LINE, LWPOLYLINE)で囲われた表の列幅、行高さを変更 -------------------------------------------------- ■ c:txPaste クリップボードの文字列を TEXT で作成、区切り線作成 -------------------------------------------------- ■ c:txpls 数字を含んだ文字列をプラス100とかする -------------------------------------------------- ■ c:txpls2 数字を含んだ文字列をプラス100とかする +、±、− の符号対応版 -------------------------------------------------- ■ c:txrp 文字置換部分一致版(検索文字列:ex "A*"=先頭一致 "A"=部分一致 "*A"=末尾一致) -------------------------------------------------- ■ c:txup 数字を含んだ文字列をカウントアップしながらコピー -------------------------------------------------- ■ c:xbreak 図形に交差する線分を部分削除 -------------------------------------------------- ■ c:xcopy 図形をコピー コピー先で交差する線分を部分削除 2024/12/18 選択範囲を少し大きめに変更 -------------------------------------------------- ■ c:xcut 図形に交差する線分を部分削除 -------------------------------------------------- ■ c:xerase 図形を削除 図形にかかる線分を結合 -------------------------------------------------- ■ c:xln カット線分作成 -------------------------------------------------- ■ c:xmove 図形を移動 図形にかかる線分を結合、移動先で交差する線分を部分削除 線種が違う時、移動後、移動先の矩形内に残骸が残るが、これはそういう仕様(2024/12/19) -------------------------------------------------- ■ c:xstr ストレッチ Cオプション 大きさの無い(点、ATTDEF のみ)ブロックは含まれない 2024/12/19 追加 -------------------------------------------------- □ canBeJoint p1 p2 p3 p4 4点が同一直線か -------------------------------------------------- □ checkCmark pt off 交点処理 -------------------------------------------------- □ chrReplace new old str 1文字置換 -------------------------------------------------- □ clipTextToLst -------------------------------------------------- □ cmd_eDel ブロックを削除、または指示した LINE をカット -------------------------------------------------- □ decToInt decstr -------------------------------------------------- □ dispClipTextLst cliplsts -------------------------------------------------- □ do_edel1 ename ブロックを削除、線番で無ければ交差線分を結合 -------------------------------------------------- □ do_elCut ename0 pick0 線分をピック点でカット(交点処理付き) -------------------------------------------------- □ do_elemove ename0 pick0 lwp エレメントの移動(ストレッチ) -------------------------------------------------- □ do_eLine pt1 pt2 2点に配線を作成 -------------------------------------------------- □ do_elmove ename0 pick0 toPt 配線の移動(ストレッチ) つながるブロック、線分も移動(スクート) -------------------------------------------------- □ do_eMark pt 交点マークを反転 -------------------------------------------------- □ do_textmove ename0 TEXTの移動 -------------------------------------------------- □ do_xbreak ss plist -------------------------------------------------- □ doBreakLines bename ブロックに交差する線分をカット ブロックのX,Y尺度、回転に対応 2024/08/10b 2024/12/16 分かりにくいコードを削除 -------------------------------------------------- □ doJointLines bename ブロックの周囲の線分を結合 ブロックのX,Y尺度、回転に対応 2024/08/10b -------------------------------------------------- □ entgetPointList ename LINE, LWPOLYLINE の点列のみを取得 -------------------------------------------------- □ func_pickEle ename pick pick 点に近い LWP エレメントの 2 点を返す 頂点数、膨らみは無視される -------------------------------------------------- □ get_max_pos plist 相互距離が最大の2点を返す -------------------------------------------------- □ get_suuji_cnt txtlist 文字列リスト内の数字群の個数を得る -------------------------------------------------- □ getArcRect p0 r st ed lst ARC の矩形範囲 -------------------------------------------------- □ getAttValue blkEname tagName 属性読み出し 無い場合は nil が返る -------------------------------------------------- □ getBlockRect blkname ブロックの矩形範囲を返す 2024/12/18 線番が含まれる時、範囲を間違えるのを対策 -------------------------------------------------- □ getBoundingBox ename 図形を囲う矩形の2点を返す -------------------------------------------------- □ getCirRect p0 r lst CIRCLE の矩形範囲 -------------------------------------------------- □ getGridxy fuz endpFlag 線分の表組を取得し、X, Y 座標のリストを返す -------------------------------------------------- □ getLineArcInters p1 p2 p0 r st ed lst Line-Arc交点のリスト -------------------------------------------------- □ getLineBlockInters pt1 pt2 bent lst LINE 2点とブロックの交点のリストを返す BLOCK のx, y尺度、回転を考慮 2024/08/10 -------------------------------------------------- □ getLineCirInters p1 p2 p0 r lst Line-Circle交点のリスト 2024/12/16 線上である条件を追加 -------------------------------------------------- □ getLineLineInters p1 p2 p3 p4 lst Line-Line交点のリスト -------------------------------------------------- □ getLineLwpInters p1 p2 ent lst Line-LWP交点のリスト -------------------------------------------------- □ getLineRect p1 p2 lst LINE の矩形範囲 -------------------------------------------------- □ getLwpPointIndexList lwpent LWPの2D座標と位置(0ベース)のリストを得る -------------------------------------------------- □ getLwpRect ent lst LWP の矩形範囲 -------------------------------------------------- □ getSSbox ss fil 選択セットから矩形範囲を得る 取れないときは nil が返る 2024/12/18 線番が含まれるときは nil が返るに変更 -------------------------------------------------- □ hexToInt hexstr 要ifs_strpos -------------------------------------------------- □ ifs_add_zero str keta 数字の前に0を付加し、KETA数にする -------------------------------------------------- □ ifs_degToRad deg 角度変換(ラジアン -> 度) -------------------------------------------------- □ ifs_enamePointList ename LINE,POLYLINE の座標リスト(膨らみは無視) -------------------------------------------------- □ ifs_is_suuji str 文字列の1文字目が数字(1234567890)か? -------------------------------------------------- □ ifs_make_plya l kakudo px ang layer PLINEで矢印を作る -------------------------------------------------- □ ifs_radToDeg rad 角度変換(度 -> ラジアン) -------------------------------------------------- □ ifs_strpos sub string 文字列の位置検出 位置は 1 から。存在しないときは 0。 nil ではないので注意。 (vl-string-position (ascii "x") "abc") = 0 ベース (vl-string-search "a" "abc") = 0ベース -------------------------------------------------- □ ifs_strsubst txt src des sw 部分一致をすべて置換する時は、下記を使用 -------------------------------------------------- □ ifs_textBox2Off textent offset テキストを囲う矩形 4 点を取得 左下基点から左回り -------------------------------------------------- □ ifs_textgrid2 p0 ang vsize TEXT の周囲の LINE, PLINE 同士の交点 4点を左下から左回りで返す -------------------------------------------------- □ ifs_txt_bunri str 文字列を数字とそれ以外に分離しLISTにする -------------------------------------------------- □ ifs_txtlst_conv txtlst iti str 文字列カウントアップコピー 文字列リストのn番目をstrに入れ替える 注意! iti は 1 から -------------------------------------------------- □ inLine pt p1 p2 線上点であるか 長さで判断 -------------------------------------------------- □ insert_cmark blkname pos sc 交点マークを挿入 -------------------------------------------------- □ intToDec int len -------------------------------------------------- □ intToHex int len 16進変換 2021/12/21 -------------------------------------------------- □ intToOct int len 8進変換 2021/12/22 -------------------------------------------------- □ inWindow pt minPt maxPt 点 pt が矩形 minpt-maxpt 範囲内にあるか -------------------------------------------------- □ is_douitu p1 p2 p3 p4 同一直線上の判断 -------------------------------------------------- □ isLayerOn layer 画層を作成 -------------------------------------------------- □ isTate p1 p2 2点が縦線であるか -------------------------------------------------- □ jointLines entnm1 entnm2 2線を結合 -------------------------------------------------- □ jointLinesPts pt1 pt2 2点の配線を結合 -------------------------------------------------- □ ketugou entnm1 entnm2 同一直線上の判断、結合処理 -------------------------------------------------- □ lineCP pt1 pt2 off Line 2点を囲う 4 点(ssget "CP" 用) -------------------------------------------------- □ lineJoint ss pt minpt maxpt 選択セットの線分同士を結合 -------------------------------------------------- □ lineW pt1 pt2 off Line 2点を囲う 4 点(ssget "W" 用) -------------------------------------------------- □ listGridXY ss fuz endpFlag -------------------------------------------------- □ lsp2pjoin p1 p2 2点間に掛かる線分を結合、吸収 -------------------------------------------------- □ lstReplace lst index newItem リストの中身を入れ替える Index は、0 ベース -------------------------------------------------- □ make_cmark blkname 交点マークを作成 -------------------------------------------------- □ makeLayer name color 画層作成 -------------------------------------------------- □ makeMspcBox mspc index ModelSpace の index 以降の図形範囲を取得 -------------------------------------------------- □ midPoint p1 p2 中点 -------------------------------------------------- □ nearStepAng rad degStep 指定角度(deg)毎に一番近い角度(rad)を得る -------------------------------------------------- □ ntxtMove txtss x0 y0 x1 y1 txtXof txtYsp hflag 複数の文字列を、wpt1 wpt2 の窓内に配置 -------------------------------------------------- □ numstrBox ss offset カウントアップ可能な TEXT が1個のとき、その BOX 4 点 と 文字列を返す -------------------------------------------------- □ octToInt octstr -------------------------------------------------- □ OnTheLine p0 p1 p2 p0 が p1-p2 線分上にあるか -------------------------------------------------- □ perPoint pos p1 p2 点から線分への垂線の交点を返す -------------------------------------------------- □ pointW pt off pt 1点を囲う 2 点(ssget "W", "C" 用) -------------------------------------------------- □ rotate pt ang 座標回転 z-axis -------------------------------------------------- □ setAttValue blkEname tagName tagValue 属性変更 -------------------------------------------------- □ sprNum3 str 文字列を文字+数字+文字に分離 後ろから数える 2003.9.1 -------------------------------------------------- □ strSplit str delim 文字列分離 -------------------------------------------------- □ strToNumList str 文字列 "1, 3, 5-7" を (1 3 5 6 7)に -------------------------------------------------- □ sub_nmed ename 機器名編集 -------------------------------------------------- □ sub_xln p1 p2 配線作成 c:xln から呼ばれる(btrimvx232.lsp より流用) 2024/12/18 p1 p2 の同一直線上のチェックを追加 -------------------------------------------------- □ txtcatByEnameLst lst y座標が同じTEXTを結合 結合した場合: 残ったename、出来なかった場合: nil を返す