健身计划(初版,一个月)

  • 关键原则

    • 安全第一:作为新手,避免高强度或复杂动作,重点学标准姿势防受伤。

    • 高效减脂:力量训练占70%(增肌提高代谢),有氧占30%(燃脂),拒绝“只做有氧”(易掉肌肉,反弹快)。

    • 时间合理:每周3-4次训练,每次40-50分钟(适合上班族),留出休息日恢复。

    • 不追求速成:1个月是“启动期”,重点养成习惯、提升体能,体脂率下降需长期坚持(健康减脂速度:每周0.5kg左右)。

重要提醒

  • 饮食决定70%效果 !训练计划需配合饮食:

    • 每日热量缺口300-500kcal(推荐1500-1700kcal/天),

    • 蛋白质优先(每kg体重1.2-1.5g,约75-90g/天,如鸡蛋、鸡胸肉、蛋白粉),

    • 碳水选低GI(燕麦、糙米),蔬菜占1/2餐盘,

    • 戒含糖饮料+油炸食品。 (具体饮食方案可另附,此处聚焦训练)

  • 第1周务必找教练指导1次:确认动作标准(尤其深蹲、弓步),避免受伤。

  • 身体信号:肌肉酸痛正常(48小时内消退),关节痛立即停止。

阶段重点目标训练频率强度特点
第1周适应期:学习动作,激活身体3次/周无重量/极轻重量,低强度有氧
第2周基础期:增加肌肉耐力3-4次/周轻重量,延长组间休息
第3周进阶期:提升代谢消耗4次/周重量微增,加入循环训练
第4周巩固期:强化塑形效果4次/周稳定重量,注重动作控制

每周安排示例(可灵活调整):

  • 周一:力量训练(全身)

  • 周二:有氧+核心

  • 周三:休息(或散步30分钟)

  • 周四:力量训练(全身)

  • 周五:有氧

  • 周六:休息

  • 周日:力量训练(全身) 注:力量训练日间隔至少1天,确保肌肉恢复。

详细训练内容(附动作图解/视频建议)

每次训练前必做:热身5-10分钟

  • 跑步机快走(速度4km/h,坡度3%)5分钟

  • 动态拉伸:高抬腿30秒×2组、手臂画圈30秒×2组、猫牛式伸展1分钟

每次训练后必做:拉伸5-10分钟

  • 针对训练部位静态拉伸(每个动作30秒):

    • 大腿前侧:站姿拉脚踝

    • 背部:婴儿式

    • 手臂:交叉手臂拉伸


力量训练(全身,每次30-40分钟)

原则

  • 固定器械或哑铃(新手避免杠铃),重量选择:能标准完成次数,最后2次轻微吃力。

  • 组间休息60秒(第1周可延长至90秒)。

  • 每个动作从无重量开始,第1周只练动作模式,第2周起加重量(推荐:哑铃2-3kg起)。

  • 重点塑形部位:臀腿(改善梨形身材)、手臂(告别拜拜肉)、核心(平坦小腹)。

周数动作组数×次数新手要点视频参考(搜索关键词)
第1周1. 徒手深蹲2×10-12背部贴墙下蹲,膝盖不超脚尖,臀部向后坐“徒手深蹲 新手”
2. 跪姿哑铃划船2×10(单侧)膝盖跪凳,背部平直,哑铃拉向肋骨“跪姿划船 女生”
3. 器械坐姿推胸2×10调节器械高度,手肘微屈推起,不耸肩“坐姿推胸器械 新手”
4. 臀桥2×15仰卧屈膝,臀部发力抬起,顶峰夹紧3秒“臀桥 新手”
5. 平板支撑2×20秒手肘对肩,身体成直线,收腹不塌腰“平板支撑 正确姿势”
第2周1. 哑铃高脚杯深蹲3×10双手持1个哑铃贴胸口,下蹲更深“高脚杯深蹲 新手”
2. 哑铃弓步(原地)2×8/腿手持2-3kg哑铃,前腿膝盖90°,后腿不触地“哑铃弓步 女生”
3. 器械高位下拉3×10调整座椅高度,双手宽握,用背部发力下拉“高位下拉 新手”
4. 侧卧蚌式开合2×15/侧侧卧屈膝,膝盖开合像蚌壳,练臀中肌(改善假胯宽)“蚌式开合 塑形”
5. 死虫式2×12/侧仰卧抬腿90°,交替伸展对侧手脚,保护腰椎“死虫式 核心”
第3周1. 哑铃罗马尼亚硬拉3×10微屈膝,哑铃沿腿下放至小腿中段,臀部后推(练臀腿后侧)“哑铃硬拉 新手”
2. 哑铃肩推3×10坐姿推举,哑铃推至头顶不锁死肘“哑铃肩推 女生”
3. 器械坐姿划船3×10胸部贴垫,双手握V把,肩胛骨后缩“坐姿划船 新手”
4. 保加利亚分腿蹲2×8/腿后脚抬高,前腿下蹲至大腿平行地面(扶固定物)“保加利亚分腿蹲 新手”
5. 侧平板支撑2×15秒/侧手肘撑地,身体侧向抬起,练侧腰线条“侧平板支撑 塑形”
第4周1. 循环训练(减脂高效): 深蹲10次 → 弓步8次/腿 → 平板支撑30秒 → 休息60秒,重复3轮-动作间不休息,组间休息90秒,心率提升燃脂快“新手循环训练 减脂”
2. 哑铃臀推3×12上背靠凳,杠铃/哑铃放髋部,臀部发力顶起“哑铃臀推 新手”
3. 绳索面拉3×12调至低位,双手拉向额头,改善圆肩驼背“绳索面拉 姿势矫正”
有氧训练(每次20-30分钟)

原则

  • 中等强度:心率保持在(220-年龄)×60%-70% ≈ 117-136次/分(说话微喘但能连续说5字)。

  • 优先选低冲击:保护膝盖(新手避免长时间跑步)。

  • 时间安排:力量训练后做,或单独一天。

周数推荐方式具体方案新手要点
第1周椭圆机20分钟,阻力3-4,速度4-5km/h保持上身直立,脚跟不离踏板
第2周划船机25分钟,阻力5,节奏18-20桨/分先蹬腿→后倒躯干→拉手臂,顺序别错
第3周跑步机间歇训练快走5分钟 → 慢跑1分钟(速度5.5km/h)→ 重复5组慢跑时坡度调至2%,保护膝盖
第4周固定自行车+上肢摇摆30分钟,阻力6,手握把手左右摇摆(练手臂)避免屁股离开坐垫

关键注意事项

  1. 重量选择指南

    • 第1周:无重量(只做动作模式)。

    • 第2周:极轻重量(哑铃2-3kg,器械最轻档)。

    • 第3-4周:微增重量(如深蹲从2kg→3kg),但永远以标准动作为前提(如果某动作无法标准完成8次,说明重量过重,立即减重)

  2. 塑形重点区域针对性建议

    • 臀部扁平/下垂:深蹲、臀桥、臀推必须做标准(顶峰收缩夹紧3秒)。

    • 手臂拜拜肉:肩推、划船多练(别只做卷曲!),配合有氧减脂。

    • 小腹松弛:死虫式、平板支撑每天可加练(但减脂靠全身热量缺口)。

  3. 避免新手常见错误

    • ✘ 有氧时间过长(>40分钟)→ 消耗肌肉,越练越松垮。

    • ✘ 忽略核心训练 → 腰腹无力影响体态。

    • ✘ 1个月后突然停练 → 建议第4周开始规划后续计划(如加入瑜伽保持柔韧性)。

  4. 进度记录与调整

    • 每周测量:腰围、臀围、大腿围(比体重更能反映塑形效果)。

    • 拍照对比:同一光线/角度,穿相似衣服(第1天和第30天)。

    • 如果某动作疼痛:换成退阶版(如深蹲用椅子辅助)。


1个月后预期效果 & 下一步

  • 可实现的成果

    • 体脂率下降1-2%(视觉上腰臀更紧致,手臂线条初现),

    • 体重减1.5-2.5kg(主要来自脂肪),

    • 体能提升:能轻松完成15个标准深蹲,有氧耐力增强。

  • 重要提醒

    1个月只是开始!塑形需3-6个月持续训练。建议:

    • 第5周起:增加训练频率至4-5次/周,加入分化训练(如上肢/下肢分开练),

    • 重点学习:硬拉、引体向上(辅助器械),

    • 饮食持续优化:蛋白质增至100g/天,碳水根据训练量调整。

内容概要:本文是一份针对2025年中国企业品牌传播环境撰写的《全网媒体发稿白皮书》,聚焦企业媒体发稿的策略制定、渠道选择与效果评估难题。通过分析当前企业面临的资源分散、内容同质、效果难量化等核心痛点,系统性地介绍了新闻媒体、央媒、地方官媒和自媒体四大渠道的特点与适用场景,并深度融合“传声港”AI驱动的新媒体平台能力,提出“策略+工具+落地”的一体化解决方案。白皮书详细阐述了传声港在资源整合、AI智能匹配、舆情监测、合规审核及全链路效果追踪方面的技术优势,构建了涵盖曝光、互动、转化与品牌影响力的多维评估体系,并通过快消、科技、零售等行业的实战案例验证其有效性。最后,提出了按企业发展阶段和营销节点定制的媒体组合策略,强调本土化传播与政府关系协同的重要性,助力企业实现品牌声量与实际转化的双重增长。; 适合人群:企业市场部负责人、品牌方管理者、公关传播从业者及从事数字营销的相关人员,尤其适用于初创期至成熟期不同发展阶段的企业决策者。; 使用场景及目标:①帮助企业科学制定媒体发稿策略,优化预算分配;②解决渠道对接繁琐、投放不精准、效果不可衡量等问题;③指导企业在重大营销节点(如春节、双11)开展高效传播;④提升品牌权威性、区域渗透力与危机应对能力; 阅读建议:建议结合自身企业所处阶段和发展目标,参考文中提供的“传声港服务组合”与“预算分配建议”进行策略匹配,同时重视AI工具在投放、监测与优化中的实际应用,定期复盘数据以实现持续迭代。
先展示下效果 https://pan.quark.cn/s/987bb7a43dd9 VeighNa - By Traders, For Traders, AI-Powered. Want to read this in english ? Go here VeighNa是一套基于Python的开源量化交易系统开发框架,在开源社区持续不断的贡献下一步步成长为多功能量化交易平台,自发布以来已经积累了众多来自金融机构或相关领域的用户,包括私募基金、证券公司、期货公司等。 在使用VeighNa进行二次开发(策略、模块等)的过程中有任何疑问,请查看VeighNa项目文档,如果无法解决请前往官方社区论坛的【提问求助】板块寻求帮助,也欢迎在【经验分享】板块分享你的使用心得! 想要获取更多关于VeighNa的资讯信息? 请扫描下方二维码添加小助手加入【VeighNa社区交流微信群】: AI-Powered VeighNa发布十周年之际正式推出4.0版本,重磅新增面向AI量化策略的vnpy.alpha模块,为专业量化交易员提供一站式多因子机器学习(ML)策略开发、投研和实盘交易解决方案: :bar_chart: dataset:因子特征工程 * 专为ML算法训练优化设计,支持高效批量特征计算与处理 * 内置丰富的因子特征表达式计算引擎,实现快速一键生成训练数据 * Alpha 158:源于微软Qlib项目的股票市场特征集合,涵盖K线形态、价格趋势、时序波动等多维度量化因子 :bulb: model:预测模型训练 * 提供标准化的ML模型开发模板,大幅简化模型构建与训练流程 * 统一API接口设计,支持无缝切换不同算法进行性能对比测试 * 集成多种主流机器学习算法: * Lass...
<think>我们注意到问题:文字位置全部位于一个点,不符合初版样式。这是因为在复制对象后,我们试图获取复制后的选择集的边界框,但实际上,我们获取的是原始选择集(复制前)的边界框。复制后的对象并不在当前选择集中,因此无法正确计算边界框。解决方案:1.在复制操作之前,先计算原始选择集(即当前颜色分组)的边界框,然后根据这个边界框计算文字位置(但注意,复制后位置会移动)。2.但是,我们想要的是复制后的位置,所以不能直接使用原始选择集的边界框。另一种思路:在复制操作后,重新选择新位置的对象,然后计算边界框。但这样会增加复杂度和选择时间。更简单的方法:既然我们已经知道目标位置(target-pt)和原始基准点(p2),那么我们可以通过偏移量来调整原始边界框,从而得到新位置的边界框。步骤:a.计算原始选择集(当前颜色分组)的边界框(在原始位置)。b.计算边界框的中心点(原始位置)。c.计算偏移量=target-pt-p2。d.新边界框的中心点=原始中心点+偏移量。e.文字位置=新边界框中心点正上方(Y坐标增加一定量)。但是,由于我们复制时使用的是基准点p2到target-pt的平移,所以整个分组移动的向量就是(dx,dy)=((cartarget-pt)-(carp2),(cadrtarget-pt)-(cadrp2))。因此,我们可以:1.在复制前,先计算当前颜色分组的边界框(原始位置)。2.计算原始边界框的中心点(原始位置)和最大Y值(用于确定文字位置的高度)。3.计算新位置的中心点=((car原始中心点)+dx,(cadr原始中心点)+dy)。4.计算新位置的最大Y=(原始最大Y+dy)。5.文字位置=(新中心点X,新最大Y+文字高度偏移)。注意:由于我们复制时整个组移动了(dx,dy),所以组内每个点都移动了相同的向量。修改代码步骤:1.在复制之前,先获取当前颜色分组的边界框(原始位置)。2.计算偏移量:dx=(cartarget-pt)-(carp2),dy=(cadrtarget-pt)-(cadrp2)3.计算新位置的文字点:text-pt=(list(+(car原始边界框中心)dx)(+(cadr原始边界框最大点)dy(*0.2sc));在最高点之上再加0.2倍原始高度)但是,我们也可以直接计算文字位置:text-pt=(list(+(car原始边界框中心)dx)(+(cadr原始边界框最大点)dy(*0.2sc)))这样,文字位置就会在复制后的分组正上方,且高度与原始位置时相同(相对于分组最高点)。具体修改:在复制操作之前,先计算原始边界框:(setqgroup-bbox(get-ss-bboxcolor-ss))(ifgroup-bbox(progn(setqgroup-minpt(cargroup-bbox))(setqgroup-maxpt(cadrgroup-bbox))(setqgroup-center(list(/(+(cargroup-minpt)(cargroup-maxpt))2.0)(/(+(cadrgroup-minpt)(cadrgroup-maxpt))2.0)))(setqdx(-(cartarget-pt)(carp2)))(setqdy(-(cadrtarget-pt)(cadrp2)))(setqtext-pt(list(+(cargroup-center)dx)(+(cadrgroup-maxpt)dy(*0.2sc)))))(progn;;如果无法计算边界框,使用旧方法(基于行列计算)(setqtext-pt(list(cartarget-pt)(+(cadrtarget-pt)(*0.8row-height))))))然后,在复制之后,使用这个text-pt来放置文字。注意:复制操作可能会改变当前选择集,所以必须在复制前计算原始选择集的边界框。因此,调整代码顺序:1.计算目标位置target-pt2.计算原始选择集的边界框(如果可能)3.计算偏移量dx,dy4.计算文字位置text-pt5.执行复制操作6.创建文字修改后的代码片段如下:```lisp;;计算目标位置(考虑行列偏移)(setqtarget-pt(list(+(carp1)(*colcol-width))(-(cadrp1)(*rowrow-height))));;计算原始选择集的边界框(复制前)(setqgroup-bbox(get-ss-bboxcolor-ss))(ifgroup-bbox(progn(setqgroup-minpt(cargroup-bbox))(setqgroup-maxpt(cadrgroup-bbox))(setqgroup-center(list(/(+(cargroup-minpt)(cargroup-maxpt))2.0)(/(+(cadrgroup-minpt)(cadrgroup-maxpt))2.0)))(setqdx(-(cartarget-pt)(carp2)))(setqdy(-(cadrtarget-pt)(cadrp2)))(setqtext-pt(list(+(cargroup-center)dx)(+(cadrgroup-maxpt)dy(*0.2sc));在原始最高点基础上偏移)));;如果无法计算边界框,使用旧方法(setqtext-pt(list(cartarget-pt)(+(cadrtarget-pt)(*0.8row-height)))));;使用用户选择的第一个点p2作为基准点,复制到target-pt(command"_.copy"color-ss"""_non"p2"_non"target-pt);;创建文字标注(setqcolor-name...)(command"_.text""_S""Standard""_non"text-pt300...)```这样,文字位置就会在复制后的分组正上方,且与分组上边缘的距离为0.2*sc(原始选择区域的高度比例),并且水平居中。完整代码修改如下:</think>我理解问题所在:文字位置全部位于一个点,而不是分布在每个分组的正上方。这是因为在复制操作后,我们没有正确获取复制后的对象边界框。以下是修复后的完整代码,确保文字位置正确分布在每个分组的正上方: ```lisp (defun c:CCG (/ os ss p2 p3 p1 colors color-id sc col-width row-height col row max-cols color-ss text-pt n ent entdata color-index true-color ent-color-index ent-true-color ent-color-id color-name group-bbox group-minpt group-maxpt group-center dx dy new-ss new-ent new-obj ll ur) ;; 错误处理函数 (defun *error* (msg) (if os (setvar 'osmode os)) (setvar 'cmdecho 1) (princ (strcat "\n错误: " msg)) (princ) ) ;; 加载ActiveX支持 (vl-load-com) ;; 获取选择集边界框函数 (defun get-ss-bbox (ss / i ent minpt maxpt obj ll ur) (if (and ss (> (sslength ss) 0)) (progn (setq i 0) (setq minpt (list 1e308 1e308 0.0)) (setq maxpt (list -1e308 -1e308 0.0)) (repeat (sslength ss) (setq ent (ssname ss i)) (setq obj (vlax-ename->vla-object ent)) (vla-getboundingbox obj 'll 'ur) (setq ll (vlax-safearray->list ll)) (setq ur (vlax-safearray->list ur)) (setq minpt (list (min (car minpt) (car ll)) (min (cadr minpt) (cadr ll)) (min (caddr minpt) (caddr ll)))) (setq maxpt (list (max (car maxpt) (car ur)) (max (cadr maxpt) (cadr ur)) (max (caddr maxpt) (caddr ur)))) (setq i (1+ i)) ) (list minpt maxpt) ) nil ) ) ;; 初始化变量 (setq os (getvar 'osmode)) (setvar 'cmdecho 0) (command "_.undo" "_BE") ;; 用户提示 (princ "\n*** 颜色分离工具 *** (命令: CCG)") (setq p2 (getpoint "\n选择区域第一点: ")) (setq p3 (getpoint p2 "\n选择区域第二点: ")) (setq p1 (getpoint "\n指定分离后的起始位置: ")) ;; 设置捕捉模式 (setvar 'osmode 0) ;; 获取选择集 (setq ss (ssget "_W" p2 p3)) (if (null ss) (progn (princ "\n未选择到任何对象!") (exit) ) ) ;; 计算原始选择区域尺寸 (setq sc (abs (- (cadr p3) (cadr p2)))) (setq col-width (* 1.5 (abs (- (car p3) (car p2))))) (setq row-height (* 1.2 (+ sc 100))) ;; 提取所有颜色标识 (setq colors '()) (setq n 0) (repeat (sslength ss) (setq ent (ssname ss n)) (setq entdata (entget ent)) (setq color-index (cdr (assoc 62 entdata))) (setq true-color (if (and (assoc 420 entdata) (assoc 430 entdata)) (cdr (assoc 430 entdata)) nil ) ) (setq color-id (cond (true-color (strcat "RGB:" true-color)) ((= color-index 0) "ByBlock") ((= color_index 256) "ByLayer") ((numberp color-index) (strcat "ACI:" (itoa color-index))) (t "Unknown") ) ) (if (and color-id (not (member color-id colors))) (setq colors (cons color-id colors)) ) (setq n (1+ n)) ) ;; 按颜色类型排序 (setq colors (vl-sort colors '(lambda (a b) (cond ((and (wcmatch a "ACI:*") (wcmatch b "ACI:*")) (< (atoi (substr a 5)) (atoi (substr b 5)))) ((and (wcmatch a "RGB:*") (wcmatch b "RGB:*")) (string< (vl-string-trim "RGB:" a) (vl-string-trim "RGB:" b))) (t (string< a b)) ) ) ) ) (setq col 0) (setq row 0) (setq max-cols 3) ;; 分离每种颜色的对象 (foreach color colors (setq color-ss (ssadd)) (setq n 0) (repeat (sslength ss) (setq ent (ssname ss n)) (setq entdata (entget ent)) (setq ent-color-index (cdr (assoc 62 entdata))) (setq ent-true-color (if (and (assoc 420 entdata) (assoc 430 entdata)) (cdr (assoc 430 entdata)) nil ) ) (setq ent-color-id (cond (ent-true-color (strcat "RGB:" ent-true-color)) ((= ent-color-index 0) "ByBlock") ((= ent-color-index 256) "ByLayer") ((numberp ent-color-index) (strcat "ACI:" (itoa ent-color-index))) (t "Unknown") ) ) (if (equal ent-color-id color) (ssadd ent color-ss) ) (setq n (1+ n)) ) ;; 复制并标注 (if (> (sslength color-ss) 0) (progn ;; 计算目标位置 (考虑行列偏移) (setq target-pt (list (+ (car p1) (* col col-width)) (- (cadr p1) (* row row-height)) )) ;; === 关键修改1: 计算原始分组边界框 === (setq group-bbox (get-ss-bbox color-ss)) (if (not group-bbox) (progn ;; 如果无法计算边界框,使用默认值 (setq group-minpt p2) (setq group-maxpt p3) ) (progn (setq group-minpt (car group-bbox)) (setq group-maxpt (cadr group-bbox)) ) ) ;; === 关键修改2: 计算偏移量 === (setq dx (- (car target-pt) (car group-minpt))) (setq dy (- (cadr target-pt) (cadr group-minpt))) ;; === 关键修改3: 计算文字位置 === (setq text-pt (list (+ (car group-minpt) (/ (- (car group-maxpt) (car group-minpt)) 2.0) dx) (+ (cadr group-maxpt) (* 0.2 sc) dy) )) ;; 使用用户选择的第一个点p2作为基准点 (command "_.copy" color-ss "" "_non" p2 "_non" target-pt) (setq color-name (cond ((wcmatch color "ACI:*") (strcat "索引色 " (substr color 5))) ((wcmatch color "RGB:*") (strcat "真彩色 " (substr color 5))) (t color) ) ) ;; 创建文字标注 (command "_.text" "_S" "Standard" "_non" text-pt 30 0 (strcat color-name " (" (itoa (sslength color-ss)) "个对象)")) (setq row (1+ row)) (if (>= row 5) (progn (setq row 0) (setq col (1+ col)) (if (>= col max-cols) (progn (setq col 0) (setq row 0) (setq p1 (getpoint "\n空间不足,请指定新的分离位置点: ")) ) ) ) ) ) ) ) ;; 清理与反馈 (command "_.undo" "_E") (setvar 'osmode os) (setvar 'cmdecho 1) (princ (strcat "\n成功分离 " (itoa (length colors)) " 种颜色!")) (princ) ) ``` ### 关键修复说明: 1. **修复文字位置计算逻辑**: ```lisp ;; 计算偏移量 (setq dx (- (car target-pt) (car group-minpt))) (setq dy (- (cadr target-pt) (cadr group-minpt))) ;; 计算文字位置 (setq text-pt (list (+ (car group-minpt) (/ (- (car group-maxpt) (car group-minpt)) 2.0) dx) (+ (cadr group-maxpt) (* 0.2 sc) dy) )) ``` - X坐标:原始分组中心点X + 偏移量X - Y坐标:原始分组最大Y + 原始高度比例 + 偏移量Y 2. **确保边界框计算可靠**: ```lisp (if (not group-bbox) (progn ;; 如果无法计算边界框,使用默认值 (setq group-minpt p2) (setq group-maxpt p3) ) (progn (setq group-minpt (car group-bbox)) (setq group-maxpt (cadr group-bbox)) ) ) ``` - 添加回退机制,当边界框计算失败时使用用户选择点 3. **优化变量声明**: ```lisp (defun c:CCG (/ ... dx dy group-bbox group-minpt group-maxpt ...)) ``` - 添加必要的局部变量声明 4. **保持原始比例**: ```lisp (+ (cadr group-maxpt) (* 0.2 sc) dy) ``` - 使用原始选择区域高度(sc)保持文字位置比例一致 ### 文字位置计算详解: 1. **原始分组中心点X**: ```lisp (+ (car group-minpt) (/ (- (car group-maxpt) (car group-minpt)) 2.0)) ``` - 最小X + (最大X - 最小X)/2 = 中心点X 2. **原始分组最大Y**: ```lisp (cadr group-maxpt) ``` - 分组中最高的Y坐标 3. **偏移量计算**: ```lisp (setq dx (- (car target-pt) (car group-minpt))) (setq dy (- (cadr target-pt) (cadr group-minpt))) ``` - dx:目标位置X - 原始最小X - dy:目标位置Y - 原始最小Y 4. **最终文字位置**: ```lisp (list [原始中心X + dx] [原始最大Y + 0.2*原始高度 + dy] ) ``` - 确保文字位于每个分组正上方中央位置 - 与分组的垂直距离保持一致 ### 使用效果: - 文字标注现在正确地位于每个颜色分组的正上方中央 - 文字与分组的垂直距离与原始版本一致 - 当空间不足时,程序会提示用户指定新的位置 - 保留了所有原始功能(颜色识别、分组排序等)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值