论坛帮助 |
社区圈子 |
日历事件 |
2024-07-19, 10:57 | #1 | ||
|
|||
正式会员
等级: 一袋长老
|
第一个minusOffset是摸索了一下之后大概懂了用法的。这个脚本界面看起来跟偏移路径的窗口很像,但是是用来做偏移路径后的后续加工的。如果你不知道作者的用意,单独试验脚本,没有选中合适的试验对象的情况下可能试不出来怎么用。 比如你做了一组偏移的路径很多条,它可以用顶层对象去依次减去你这些偏移出来的路径,节省你很多重复的操作步骤跟时间。推而广之就是减去下方所有路径就完事儿,特定场景下就特别好用。 minusOffset.jpg 第二个bigbang就搞不懂了,看代码似乎是跟位置分布有关的,涉及到获取对象的bounds值(坐标值),然后进行一点数学运算生成新值。但是操作一下感觉很怪,有时候看到一点无谓的位置移动,经常是运行之后图形不见了,就报内存不足。 作为一个多年前就开发出多个实用脚本的人,近两年开发的脚本肯定也是为了解决有用的需求的。但是作者不讲,代码开头也没注释,小弟实在是才疏学浅,看不懂就不配使用的感觉,很痛苦,求拯救! BigBang.jpg |
||
回复时引用此帖 |
2024-07-19, 12:07 | 只看该作者 #4 | |||
|
||||
学到的要教人,得到的要给人!
等级: 七袋长老
|
引用:
__________________
学到的要教人,得到的要给人! 遥遥领先Pitstop、Qi动作指导教学 解决日常难题,提升数倍工作效率! |
|||
回复时引用此帖 |
右列会员因为此帖价值甚高向 kibby 表示感谢: |
saplings (2024-07-19)
|
2024-07-19, 13:17 | 只看该作者 #5 | ||
|
|||
中级会员
等级: 六袋长老
|
所以,他们的作品大多都是为了炫技而不是实用,象随机图形、重复图形、计算等脚本,实际工作用途都近似为无,但不乏技术研究的成份在里面。 包括这个脚本,本身就有问题,所以就会出现内存读写溢出的问题。 这个问题其实是将对象移动超过辅助板坐标后,Illustrator无法容纳这些对象造成的,之前我写对齐插件时遇到同样的问题,修正后对象不超出辅助板就不会出现这个报错了。 |
||
回复时引用此帖 |
2024-07-21, 10:34 | 只看该作者 #10 | |||
|
||||
学到的要教人,得到的要给人!
等级: 七袋长老
|
引用:
$.errorMessage = function (err) {alert(err + '\n' + err.line);}; // 扩展Object原型,添加extend方法,用于深度或浅拷贝对象属性 Object.prototype.extend = function (userObject, deep) { try { // 遍历用户对象的所有属性 for (var key in userObject) { // 如果当前对象有该属性 if (this.hasOwnProperty(key)) { // 如果是深度拷贝,并且属性值都是对象类型 if (deep && this[key] instanceof Object && !(this[key] instanceof Array) && userObject[key] instanceof Object && !(userObject[key] instanceof Array)) { this[key].extend(userObject[key], deep); // 递归深度拷贝 } else { this[key] = userObject[key]; // 直接赋值,浅拷贝 } } } return this; // 返回拷贝后的对象 } catch (e) { $.errorMessage('$.objectParser() - error: ' + e); // 出错时调用错误消息处理函数 } }; // 获取数组的边界框 $.getBounds = function (arr, bounds) { // 如果未指定边界类型,默认为'geometricBounds' bounds = bounds || 'geometricBounds'; // 如果边界类型不包含'Bounds',则添加 bounds = (bounds && bounds.toLowerCase().indexOf('bounds') === -1) ? bounds += 'Bounds' : bounds; var x = [], y = [], w = [], h = []; // 初始化边界坐标数组 for (var i = 0; i < arr.length; i++) { x.push(arr[i][bounds][0]); // 添加x坐标 y.push(arr[i][bounds][1]); // 添加y坐标 w.push(arr[i][bounds][2]); // 添加宽度 h.push(arr[i][bounds][3]); // 添加高度 }; return [Math.min.apply(null, x), Math.max.apply(null, y), Math.max.apply(null, w), Math.min.apply(null, h)]; // 返回最小x,最大y,最大w,最小h }; // 获取单位 $.getUnits = function (val, def) { return 'px,pt,mm,cm,in,pc'.indexOf(val.slice(-2)) > -1 ? val.slice(-2) : def; // 如果值包含单位,则返回单位,否则返回默认单位 }; // 单位转换函数 $.convertUnits = function (obj, b) { if (obj === undefined) { return obj; } // 如果对象未定义,直接返回 if (b === undefined) { b = 'px'; } // 如果未指定目标单位,默认为'px' // 省略部分代码,该函数用于将不同单位的值转换为指定单位 }; // 脚本名称和版权信息 var scriptName = 'bigBang', copyright = ' \u00A9 www.ladyginpro.ru', settingFile = { name: scriptName + '__setting.json', folder: Folder.myDocuments + '/LA_AI_Scripts/' }, isUndo = false, $count = selection.length; // 选中对象的数量 // 生成一个随机数的函数 function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; } // bigBang函数,用于调整选中对象的位置 function bigBang (items, userOptions) { // 省略部分代码,该函数根据用户选项调整对象位置 } // 输入数字事件处理函数 function inputNumberEvents (ev, _input, min, max, callback) { // 省略部分代码,该函数用于处理输入框的键盘事件 } // 创建一个对话框窗口 var win = new Window('dialog', scriptName + copyright); // 省略部分代码,设置窗口和面板布局 // 预览和按钮事件处理 preview.onClick = function() { previewStart(); } cancelBtn.onClick = function() { win.close(); } applyBtn.onClick = function() { // 根据是否启用预览和是否执行过撤销操作来处理按钮点击事件 } // 获取用户输入的数据 function getData() { return { // 返回用户设置的参数 }; } // 开始执行操作 function startAction() { bigBang(selection, getData()); } // 开始预览操作 function previewStart() { // 根据预览状态执行撤销或操作,并更新视图 } // 窗口关闭事件处理 win.onClose = function () { // 如果执行 随便翻译了一段,这个是明码,直接注释就可以了 |
|||
回复时引用此帖 |
右列会员因为此帖价值甚高向 kibby 表示感谢: |
saplings (2024-07-21)
|
2024-07-22, 10:44 | 只看该作者 #12 | ||
|
|||
正式会员
等级: 一袋长老
|
如果脚本是这种设计的话,那么久可以用作类似这种效果的制作。距离参考点越近的元素,移动的距离越小,越远的元素移动距离越大,最终呈现出来就像这些元素被炸开一样。难道这就是脚本起名bigbang的原因嘛~ |
||
回复时引用此帖 |