From 577b32ca17a7d68c47f86103af956946746efe88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Str=C3=B8mberg?= Date: Mon, 1 Apr 2024 22:00:12 +0200 Subject: [PATCH] Removed 3ds max and maya scripts, I feel it's appropriate and less confusing to have the blender scripts be in the repo root. --- .gitignore | 1 + Blender/README.md | 50 --------------- Blender/mesh_merge_tool.zip | Bin 7086 -> 0 bytes Blender/ContextSelect.py => ContextSelect.py | 0 ...Along_Curve.py => Duplicate_Along_Curve.py | 0 Blender/Edge_To_Curve.py => Edge_To_Curve.py | 0 Blender/LICENSE => LICENSE | 0 Max/CylinderToPlane.ms | 46 -------------- Max/StrombergTools-HideTimeline.mcr | Bin 222 -> 0 bytes Max/StrombergTools-LocalTrans.mcr | Bin 83 -> 0 bytes Max/StrombergTools-MakePlanarX.mcr | Bin 81 -> 0 bytes Max/StrombergTools-MakePlanarY.mcr | Bin 81 -> 0 bytes Max/StrombergTools-MakePlanarZ.mcr | Bin 81 -> 0 bytes Max/StrombergTools-QuickMaterialmc.mcr | Bin 1428 -> 0 bytes Max/StrombergTools-QuickWeld.mcr | 7 --- Max/StrombergTools-SetCrease.mcr | Bin 119 -> 0 bytes Max/StrombergTools-addTurbosmooth.mcr | Bin 103 -> 0 bytes Max/StrombergTools-detach.mcr | 6 -- Maya/Mel/CableMaker.mel | 57 ------------------ README.md | 51 +++++++++++++++- .../__init__.py | 1 - .../icons/ops.mesh.merge_tool.dat | Bin 22 files changed, 51 insertions(+), 168 deletions(-) delete mode 100644 Blender/README.md delete mode 100644 Blender/mesh_merge_tool.zip rename Blender/ContextSelect.py => ContextSelect.py (100%) rename Blender/Duplicate_Along_Curve.py => Duplicate_Along_Curve.py (100%) rename Blender/Edge_To_Curve.py => Edge_To_Curve.py (100%) rename Blender/LICENSE => LICENSE (100%) delete mode 100644 Max/CylinderToPlane.ms delete mode 100644 Max/StrombergTools-HideTimeline.mcr delete mode 100644 Max/StrombergTools-LocalTrans.mcr delete mode 100644 Max/StrombergTools-MakePlanarX.mcr delete mode 100644 Max/StrombergTools-MakePlanarY.mcr delete mode 100644 Max/StrombergTools-MakePlanarZ.mcr delete mode 100644 Max/StrombergTools-QuickMaterialmc.mcr delete mode 100644 Max/StrombergTools-QuickWeld.mcr delete mode 100644 Max/StrombergTools-SetCrease.mcr delete mode 100644 Max/StrombergTools-addTurbosmooth.mcr delete mode 100644 Max/StrombergTools-detach.mcr delete mode 100644 Maya/Mel/CableMaker.mel rename {Blender/mesh_merge_tool => mesh_merge_tool}/__init__.py (99%) rename {Blender/mesh_merge_tool => mesh_merge_tool}/icons/ops.mesh.merge_tool.dat (100%) diff --git a/.gitignore b/.gitignore index ba4fa31..7a13ab9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ */.mypy_cache/* +*/.ruff_cache/* \ No newline at end of file diff --git a/Blender/README.md b/Blender/README.md deleted file mode 100644 index 0f566d6..0000000 --- a/Blender/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Blender - -## Maya Style Merge Tool -![](https://i.imgur.com/EQ0rLzV.gif) - -Usage: Install the mesh_merge_tool.zip and then in Edit mode use the new tool that appears in the left-side Toolbar. You can right click on the tool icon to set a hotkey for switching to the tool. - -![](https://i.imgur.com/EuHTXth.png) - -You can also choose to hotkey mesh.merge_tool in the Blender Preferences > Keymap > 3D View > Mesh > Mesh (Global) if you wish to call the operator directly instead of using the tool (NOTE: It is recommended that if you choose to do this then you should enable the "Wait for Input" checkbox when setting up your hotkey. - -Click and hold the left mouse button on a vertex or edge and then drag it onto a second vertex or edge and release the mouse button to merge them. You can control whether to merge at the first or last vertex/edge, or the center between the two, via a dropdown in the Tool Settings bar at the top of the 3D Viewport, OR you can press the 1, 2, 3, A, C, F, or L key while dragging to change the merge location on the fly before you release the mouse button. -- 1, A, or F will merge at the First component. -- 2 or C will merge at the Center between the two. -- 3 or L will merge at the Last component. - -In vertex mode, if there is a starting selection and the tool is invoked on one of those vertices, then all vertices in the selection will be merged at the desired location. - -![](https://i.imgur.com/4SySLU5.gif) - -Multi-merge, line and point size, and colors can be controlled from the add-on preferences. -![](https://i.imgur.com/hIgc9ly.png) - -## Context Select (Emulates Maya's selections) -![](https://i.imgur.com/FwF4o0r.gif) - -![](https://i.imgur.com/bpaMJWL.png) -Usage: object.context_select is automatically added to Blender's keymap when the add-on is installed (this can be disabled from the add-on's preferences after being installed). -Key entries are located in Blender Preferences > Keymap > 3D View > Mesh > Mesh (Global) -Default keys are double-click to set a new selection and shift + double-click to extend a selection. - -- Selection works for all 3 component types (vertices, edges, faces). -- The script selects full loops of vertices, edges, or faces, and also full rings of edges. (With several preferences to modify selection behavior.) -- It can also create bounded selections between two components (e.g. similar to Blender's Select Shortest Path but constrained to a loop or ring only). Single-click (or shift + single-click) the first component, then shift + double-click the second component within the same loop or ring to create the bounded selection. -- All of the above functionality works on manifold quad topology for all 3 component types, it also works on the boundary of an open mesh for vertices and edges, and it also works on single wire loops (e.g. like the Circle primitive type) for vertices and edges. - -LIMITATIONS: -- At this time the add-on can only create or add to a selection; it cannot subtract from a selection (full loop or bounded deselection). -- The add-on has not been tested in the UV viewport, only in the 3D viewport, so it may not work there. - -## Edges To Curve -![](https://i.imgur.com/u2tHwLL.gif) - -Usage: Select edge(s) then search for Edges To Curve in the spacebar menu, or the Edges menu in the top of the viewport, or the Context menu, or hotkey object.edge_to_curve -Left Mouse confirms, Right Mouse cancels, Mouse Wheel increases or decreases resolution. - -## Duplicate Along Curve -![](https://i.imgur.com/8kERwFF.gif) - -Usage: Select one curve and one object, then search for Duplicate Along Curve in the spacebar menu or hotkey object.duplicate_along_curve diff --git a/Blender/mesh_merge_tool.zip b/Blender/mesh_merge_tool.zip deleted file mode 100644 index 74e66119a24925c3e2abecb2d271a81cc1739def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7086 zcmaKxWl&s8n}7$05C$DIKnU&*gL@zh!Ciw(aEF255Zs60?(PsQ5PWbaxVu{*32gH1 z-rZZf-`)3AwVdj=p6))U|Ma5_K|&?~{E5W;B-MX4{;RIS!64Y=79li@(@xX2z~3 zDz);=5(J}`-%;4KS%SRU7GKo_q&#-x8M=Gn!O$Y>LTU)zOM{Z%KJ!>G`Q*0ECFvTN z{VoF1YaK#Bn7|%4b7Ak0t4TPvKA`_y3eE&xx^ z1&NKH*L)%EAGssRADTn=zmpqhtL%dc)j>)MgJZ7QiEGs2>OwJMYy&ZXcEKG>=xrXh zhd&;Z)Ni{@qT{6JUe8<8R!UKRCiNyRCLq-aWk2cm6H z`E6wSri&LU*Q<7tlZ#0zhnbcRI~|_okCF2;M`PTa5C@s(P9TeUSuGGOcJXHMG55jG ztI6;2NV!#*Ai(LG?QPpIE}KWM;f`}kGhDd=p0jvm4~kH}R)6QsG!uZ~=0W)BOT%7_ z{kXwYn}x%!)uAv4BfGRc9(j4v023~wQm;hvWs;>iRUMbZ?avk_X(~l^dqwqJ7q$H@ z9ed}*QT)tNwW;FWcd*}?{OLc}Zbd5Qk0^ayCd7P6l=#z?jIRRH#lC}A0e}4&=m0V# z2Q3y4q8(!*03gc-03iD}U)jjW+TPmL$cW9+>%`!_%cV5I<5;!!1(F0Vq&#M>8&~fT zF2}Cs*`aV^hR9;aL-Q$E)Agb2=PBit0CZ>T8D$Hpew4vS-*yyIJ8cMX~Ad2efLz$B-<`_O~z#>BQiAr<-`vqwQe(2TX z%@DKefiE91uzxKMU>S5FMI z53NoHz&hr6++tX;{fPRNG(f-L-BHdnTHsIXw!YOf!0<)aUCx8bbI*0K%ib5iT@;B0lWY`~D2n6u0U%H) zGsr_w7A=zyDsmXF|LyPxQ8AfaC*Otbd^TDI{6iI|&tYf%`i-fk*xm-Y<<`sdL)JyE ztw|o&5ENYT@vt|&6Ma1HlrITi7J5%k-kc5AnK01X96gRb+oBw}xjnO@>Db=N;C~lQu4P(8jSz<6T7BxjhX=m!WoRx{rOwZ^JG{aRClU3mMB7ar;_2aPn0L z!F#iJ8j8itX8S3Cd_{6M1sL z6oq)W)N+W$)_*&6vtu<=V*EKgmtU0E8s>{jVGs8{ee62V!l}^)5DkvV#is2EM9UO?s5yk0IAvVyZR)o~IGo(ziIcv9+1e zDlL3Zy>-y)=PVE-dtB28zozu@PO+u#o!s?kZIK7+78dU9l5mT+sNR(J@!;S$> zzDhw(jjqJSh1MY2(O61IW}7Hi!U1kV<{*d+{BW9KA>h(;5ck95q62Xtt^|hGmhv8o zzD&YkGW%-hrw$}N6eSVW647yQQ7Zxgkie3`P^lSw?1-9>2Ulc$329F9T;>&KXp$+;!R{vm?WdSZE3vC23~pFwU!w{Ia)L z#CYp&q2h(_l%rdx2v(A=8g2_gX-&>s?ZLangDj}z_kE}`Ejb#n24Wk`3=VuYiM%BTwUB`DRWbqdjBHup1fpnLCoWu+>bn3BE6|5 z8s&CN~-*#_pmM;Tz=6t-AbD~ znmKk+x#@xQKqCNO>q20=C zT+~-5?hj4EYb1*WO&)0~raQsiz3p~&K4j?!31_r;!wj<~-)Hir&>LDO=2}H`S`DKJ z`j1QKI-aL1D+Ck=TTVZ`=4TH!YaeXa(cDhuXB~Ala_gtPh(yU?b*HLFP5`xp*9n9k z6Qdd8j^c^Fr#&W0OUg_gY)_xCL-4=6X9c|Oki^r=W>M)``10mki{FY|2_Y^NEJ)jc zUE{<_Mq$NN(Azi9GW0fIK7#c&xu7{=-i0m*>zD`rS)Sr9H&N9wbjlRRn_JK8P-ziK z#fLGW6>{t%=+J<7pEg=4SmLjF*@SImKG#ASYAN5}!MY1Rj_!}%^7~SwskIg<>r~z| zhC2U*6OHlU2OIm4ox7x!^gMx|MAb~kI8O=ZRV|3!JF)~dc!=;>JwuKuVF+%XlE2gx zYG&rcGOjuC?)g#bM#M0wZ7le(XwE9V`&$yMG?=CGBOx43CAClk-HhpaythoE2>p=b z`l@`MIyIuagYhl6nRmK^2Br^FCs3?ad)vPZfU5zVYBZQJeZHGc>lA+~{WU%Q!zS-E zz5EmF4Bpv8@T<-*Go}iP-5}tbX8pA^O9;buw(^6L;5`Up54MNX zEsMrfA_}dgDfTJB7O!PuE-aXl(&F5ZF!l7sgj$(JX~BN(;y?}t9(8^`%6J41JM@lPm*F%14|p>?o*-~Id6sH z=jJ3fh<-47r9*qtFs$fux2sa@b9GqL;zc{Kl}!E2**Y@LEqL-Zg8WR$u4aGh%V0U= z0B;UDZ1};1XW$bG56vsDsBd_g70tC!DG|7`B|iMH{tK zgXiG(JQMA;FbLCiHZO!VAmI+wKk&#l_AMo-GHC&&Aa;2|qs5M9312M68)~SLf2PwKfcl!LgFYi~AWT%p%Fc5kf zYz|L-)*C(jSR!_u{rfnivsWt3P8+?t7CP6p7#s^q-6{oJmJOS`dQ6$BGx%5IvoodS zi{vBsxSaDK0Y;=`ir$JQ5OOBmkdE&~Tcs}MSz;=(lPRgvE?%F5uhu^%TS>ccsypu7 zbcAA6qlfL)6TUJ@jrM;av16UP*pXIxloPw7BT45>75w;CZY#7@$<#+=fAQ-hiSZ%L zP0FsR@sVKyi6E%dQ;{+LsC%y(ebSf&)Zs(_(?n7$k7iHwbRbq=q>e}o6{Bw&Ud`rz zQPP6g&YG0ZFpr55k7QDR987aRKtaW=a z@uq|=f4ih(pDq%Gk`7EjHhSN`JLf~89z~b_<1$sH>?c8!-!Ou$Fi(g<88xk{*HNxL zuPMk`zNaPAlTE;C+&P2p%bshpm=%$L1z|z>9+psO*_c_e1`t-1z^>L}D|(;da$1=O zC0$t_3zWanf|J;iGebYIuhh&q3z;upFW~bMXeERi4ia@EY01a3U?l@e$&w^|C^rxo z+2(4?2aDQFFd%6*uvDm?sGf1;fi-+Gh~-Joqtxwd>b}YX*hJA&_K{(}Gqv*#>T4d? z%TgT`p8Ooi^jnF`5N=ip^zQZYZWKugDfPsd{@awGN3GUYQ_YjzMJ_Dmq=!Xea{KKA zn{zk61v!!qp8d=+^${{R^M$IOLK-vkS}WAXtg_VCF{xkILQ=oVj}Sw6mY|hUjkwH6EA2lo?sTAA2d)vcFI-9?I4zJ3EIB)tFwL z36t*ug|=N_omcCt0+(MFlwC?#@jiHgCf&!rWN%$BYsC7pjo@R>Cq|TAm&Y7 z36;z`xhq|p0aRH4K9T%2ZGNtMIAAerLf7Ug(AS?J9Hua8Bc@NdGhn3nw6h^Ida<#yqD=R9!w?neqRm~PL#g}wQbJ|j+1>Wb)c0;!8kc54h zGCCVe;SZQu^LsmXRBOIwysP{CQEYLAgcfV`f@nS4)8o^5#)J9ARd#RiU{*gP5U1}xrH+>c;TZe}{`n5|v zC^kbR*iRp?A)7Kbs}h(T(It|`${{b9my$0n2_py%-wzk_3Oy)kKuZom1aPW z0WPkO{0B6-0bKOoEZn4S6hXc?jnjP&6-PL3Ryj%oHlZPd&s$CjPOdK}h`;Abv0M}) z`pACuxIBk~;^83^s5&#J_Y}v)<4XmM{LHSWw)@N0qDD2w?7Y(2M2Tm!)wyZm^Xj9B zzshJ@%fp={iF>kcz3JicuoNvawy1=_H4**(_w;l2K22PX3Yqp?;c1`=yJe{r&_2b6 zcyD}o6ruWH^!u&rTSPnQ~It78dCvrg;Vh%BEr4N?=Gn7fxK z^d0FF+#(Iv%};I~^qHm0`I^-Mc4A|hZ*C* zgbK~&cr$M}K@+3o?Ho?9YOw8my5BirKpC`X$VGptb+gocznQ-nBgHZ(vU?xIsZ)6E z&OQ^4=zhWx>FjTo*e=%7=`dvY{-UNqXDPB(wcjRW?r5HfC@6CLi z<1_A&`Ksm0>_|yC68TAPr{5V2x-tPp;E0oP@feif?k|%H_HoN}q{pkeyIBZAxm{|K zNg8`TP;iH}DQDj(`hSKE8=u}^Lp9!T^6pU~Qx55-ur}V48kbH^9w}93lX>#;=*Vo9 zCRaTVe80ohGHqQ~AtdNhbnuqtl}h!ykK;|*5fhn9Wt-7>t15pFh@ggsk*Zs; zIPbua;;Jvl@|9Tw zW4)HRk7U)ptzcg~$fK|!3MOMh?eNwz+k^{DdE1SAWX^toN@5nVIzXGdagQ%1vnhTF zib#EF9U%6a%90`wR=;NxaPmLrqv*}T5(lq5N$iGmult)2NPn8zJ zR2kg7Y0G-sY!hI2*R6M{-ba4_c{U+D*#sxzg+%8nf9a45@f?^q8V7s%akW1Lh~_6P ze+gZjKN~fw{Kh!{w3qjk9jUpNTxu3Gt8j_3dQ6gKn@+^m+7|IUFS?=EE2mVk^ zl2U(T#McorJyY!$vMfErmkg>qdcC-(osxq2VJ33_?PeNK&!KRu!NQiwjmqsTsaj$Q2$H?} zV4$x(>YC_7Uug^)hM&Hkg?vFV4QZzBY6aODjz8d1Fj?khv#PLDCwY-ZIoU-r%8sdz z!fg>6zmvo_ow5d0s>=?!pei)>wtqwT zPfPT7&XwPPa@?jQ(*JP&;{Ffk-?^l}IDh7A@{gQS91IvFNgSlH}Y@FPAPZ^&QuG`0AD?I{ZC??nKRe?LvXec2|-pWc4} Dh43@d diff --git a/Blender/ContextSelect.py b/ContextSelect.py similarity index 100% rename from Blender/ContextSelect.py rename to ContextSelect.py diff --git a/Blender/Duplicate_Along_Curve.py b/Duplicate_Along_Curve.py similarity index 100% rename from Blender/Duplicate_Along_Curve.py rename to Duplicate_Along_Curve.py diff --git a/Blender/Edge_To_Curve.py b/Edge_To_Curve.py similarity index 100% rename from Blender/Edge_To_Curve.py rename to Edge_To_Curve.py diff --git a/Blender/LICENSE b/LICENSE similarity index 100% rename from Blender/LICENSE rename to LICENSE diff --git a/Max/CylinderToPlane.ms b/Max/CylinderToPlane.ms deleted file mode 100644 index 7cccb2f..0000000 --- a/Max/CylinderToPlane.ms +++ /dev/null @@ -1,46 +0,0 @@ -rollout CTPlane "Cylinder To Plane" -( ---Define Interface - checkbox _Del "Delete Source" triState:0 - checkbox _Half "Half Cylinder" triState:0 - button _Gen "Generate Plane" - - on _Gen pressed do - ( - if _Half.state == false then ( - "Info collected from selected cylinder" - Height = $.height - HeightSegs = $.heightsegs - Sides = $.sides - Radius = $.radius - Radius = ((Radius * 3.14) * 2) - selection[1].pivot = selection[1].center - Pos = $.pos - if _Del.state == True then (delete $) - - "Plane is created" - Plane length:Radius width:Height lengthsegs:Sides Widthsegs:HeightSegs isSelected:on - addmodifier $ (bend BendAngle:360 BendDir:-90 BendAxis:1) - selection[1].pivot = selection[1].center - $.pos = Pos - ) - if _Half.state == True then ( - "Info collected from selected cylinder" - Height = $.height - HeightSegs = $.heightsegs - Sides = ($.sides / 2) - Radius = $.radius - Radius = (Radius * 3.14) - selection[1].pivot = selection[1].center - Pos = $.pos - if _Del.state == True then (delete $) - - "Plane is created" - Plane length:Radius width:Height lengthsegs:Sides Widthsegs:HeightSegs isSelected:on - addmodifier $ (bend BendAngle:180 BendDir:-90 BendAxis:1) - selection[1].pivot = selection[1].center - $.pos = Pos - ) - ) -) -createdialog CTPlane \ No newline at end of file diff --git a/Max/StrombergTools-HideTimeline.mcr b/Max/StrombergTools-HideTimeline.mcr deleted file mode 100644 index bcb3d914b3b012581fc30e07197e63e5ef96215f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmZ9Gu?~YU3`DyUDgR(G!2lnC)U898N|lJZn_y@}AjmP5`1_``Q-_mJ=V$9?v>aN? zZWXw?o{XExyM?r}C^QD%o4gecb4NUy5PZzFk~EE5n>_idGC0u!Lt@~DJi%ojiRBw0 ztikU#Y>R+AnXs?5DzwTz%7oEQ9diA0(RH5S3o`Nz+lO_WIZM7KK diff --git a/Max/StrombergTools-MakePlanarY.mcr b/Max/StrombergTools-MakePlanarY.mcr deleted file mode 100644 index 142b78aad3f02183507b86b3981c9483fe933f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmc~zOfJd~PAo`Nz+lO_WIZT1-2 diff --git a/Max/StrombergTools-MakePlanarZ.mcr b/Max/StrombergTools-MakePlanarZ.mcr deleted file mode 100644 index fac2767b5495815f835a59e847fcc815ce41d9d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmc~zOfJd~PAo`Nz+lO_WIZZ{a* diff --git a/Max/StrombergTools-QuickMaterialmc.mcr b/Max/StrombergTools-QuickMaterialmc.mcr deleted file mode 100644 index d60757d0e76792b49c3224ac23d5f37c4df6e652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1428 zcmcJPQE$^Q5XX5d+_*v|d#?r-0@X55+$x3cl@t(E-oj(N0_shW>R8K+5U>{F3%yfyU>ZMii@xt#ua z8f;}#`+e)Mm;`n@FrH~vBN3DQ?!)$b4zDQ(=D>L?b(su* z<#I0{X5>E>10g9|^c4)lb3C$_=qtmi9~I7%#zE50DopfQHKqc4iNqb%=1^hOc&fq( zpH*Pr41Y?zyo4`Igc5D2wQXz~Xth8~yI1m*SjBXVcsfuZSvK2hAx=5A|D1* Jq&NJA5Cu?MN!WoH3u!G`0~bI*yhQxwI19Je(*C^~BEv_fOH4> Keymap > 3D View > Mesh > Mesh (Global) if you wish to call the operator directly instead of using the tool (NOTE: It is recommended that if you choose to do this then you should enable the "Wait for Input" checkbox when setting up your hotkey. + +Click and hold the left mouse button on a vertex or edge and then drag it onto a second vertex or edge and release the mouse button to merge them. You can control whether to merge at the first or last vertex/edge, or the center between the two, via a dropdown in the Tool Settings bar at the top of the 3D Viewport, OR you can press the 1, 2, 3, A, C, F, or L key while dragging to change the merge location on the fly before you release the mouse button. +- 1, A, or F will merge at the First component. +- 2 or C will merge at the Center between the two. +- 3 or L will merge at the Last component. + +In vertex mode, if there is a starting selection and the tool is invoked on one of those vertices, then all vertices in the selection will be merged at the desired location. + +![](https://i.imgur.com/4SySLU5.gif) + +Multi-merge, line and point size, and colors can be controlled from the add-on preferences. +![](https://i.imgur.com/hIgc9ly.png) + +## Context Select (Emulates Maya's selections) +![](https://i.imgur.com/FwF4o0r.gif) + +![](https://i.imgur.com/bpaMJWL.png) +Usage: object.context_select is automatically added to Blender's keymap when the add-on is installed (this can be disabled from the add-on's preferences after being installed). +Key entries are located in Blender Preferences > Keymap > 3D View > Mesh > Mesh (Global) +Default keys are double-click to set a new selection and shift + double-click to extend a selection. + +- Selection works for all 3 component types (vertices, edges, faces). +- The script selects full loops of vertices, edges, or faces, and also full rings of edges. (With several preferences to modify selection behavior.) +- It can also create bounded selections between two components (e.g. similar to Blender's Select Shortest Path but constrained to a loop or ring only). Single-click (or shift + single-click) the first component, then shift + double-click the second component within the same loop or ring to create the bounded selection. +- All of the above functionality works on manifold quad topology for all 3 component types, it also works on the boundary of an open mesh for vertices and edges, and it also works on single wire loops (e.g. like the Circle primitive type) for vertices and edges. + +LIMITATIONS: +- At this time the add-on can only create or add to a selection; it cannot subtract from a selection (full loop or bounded deselection). +- The add-on has not been tested in the UV viewport, only in the 3D viewport, so it may not work there. + +## Edges To Curve +![](https://i.imgur.com/u2tHwLL.gif) + +Usage: Select edge(s) then search for Edges To Curve in the spacebar menu, or the Edges menu in the top of the viewport, or the Context menu, or hotkey object.edge_to_curve +Left Mouse confirms, Right Mouse cancels, Mouse Wheel increases or decreases resolution. + +## Duplicate Along Curve +![](https://i.imgur.com/8kERwFF.gif) + +Usage: Select one curve and one object, then search for Duplicate Along Curve in the spacebar menu or hotkey object.duplicate_along_curve diff --git a/Blender/mesh_merge_tool/__init__.py b/mesh_merge_tool/__init__.py similarity index 99% rename from Blender/mesh_merge_tool/__init__.py rename to mesh_merge_tool/__init__.py index 5c4f0e2..0e9b59f 100644 --- a/Blender/mesh_merge_tool/__init__.py +++ b/mesh_merge_tool/__init__.py @@ -145,7 +145,6 @@ def draw(self, context): nums.prop(self, "point_size") nums.prop(self, "edge_width") nums.prop(self, "line_width") -# nums.prop(self, "circ_radius") colors = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False) colors.prop(self, "start_color") diff --git a/Blender/mesh_merge_tool/icons/ops.mesh.merge_tool.dat b/mesh_merge_tool/icons/ops.mesh.merge_tool.dat similarity index 100% rename from Blender/mesh_merge_tool/icons/ops.mesh.merge_tool.dat rename to mesh_merge_tool/icons/ops.mesh.merge_tool.dat