file-type

CSS布局示例:纯CSS实现与Yahoo! BSD许可

ZIP文件

下载需积分: 9 | 62KB | 更新于2025-09-12 | 12 浏览量 | 0 下载量 举报 收藏
download 立即下载
根据给定的文件信息,我们可以提取出以下知识点: ### 标题知识点:mapcar.github.io 1. **网站平台说明**:从标题可以推断出这是一个托管在GitHub上的网站或项目页面。GitHub是一个基于Git的代码托管平台,广泛用于软件开发和版本控制,提供免费的公共仓库托管,同时也提供私有仓库的付费服务。 2. **域名含义**:通常.github.io域名指向的是GitHub Pages服务,这是GitHub提供的一个静态站点托管服务,允许用户将网页静态内容部署到互联网上。开发者可以用来展示个人项目、博客或是作为个人简历的网站。 3. **项目性质**:“mapcar”可能是项目名称,通常“mapcar”在编程语言如Lisp中是一个函数名,用于对列表中的每个元素应用一个函数。这里可能指的是该项目与映射(map)操作有关,结合描述来看,可能是一个涉及CSS布局技术的项目。 ### 描述知识点:纯CSS布局示例 使用从项目编译的布局示例。 1. **纯CSS布局**:这表明该项目涉及的是不使用JavaScript或其他库,仅利用CSS实现页面布局的技术。纯CSS布局意味着页面的布局和样式完全由CSS决定,不依赖于JavaScript或框架,这可以提高页面加载速度,简化维护,并且与JavaScript框架无关,使得网站内容对搜索引擎和辅助技术(如屏幕阅读器)更加友好。 2. **编译示例**:这里的“编译”可能指的是CSS预处理器(如SASS、LESS等)将预处理器代码编译成纯CSS的过程。CSS预处理器允许使用变量、混合、嵌套规则等高级功能,然后编译成标准的CSS,以提高样式的可维护性和开发效率。 3. **许可证说明**:该软件可在Yahoo! Inc. BSD许可证下免费使用。BSD许可证是一种较为宽松的开源许可证,允许用户在几乎没有任何限制的情况下使用、修改和分发软件,只要保持原作者的版权声明和许可声明即可。Yahoo! Inc.在描述中可能是表示该项目与Yahoo公司有某种联系或历史渊源。 ### 标签知识点:CSS 1. **CSS定义**:CSS(层叠样式表)是一种用于描述网页呈现样式的标记语言,用于设定网页的布局、颜色、字体等各种样式。它允许内容和表现形式分离,从而让网页设计更易于维护和扩展。 2. **CSS布局技术**:纯CSS布局技术涵盖了多种布局模型,如Flexbox、Grid、Floats和Positioning等。这些技术能够帮助开发者创建响应式设计,适配不同屏幕尺寸和设备,而不必依赖JavaScript或其他框架。 3. **CSS的未来发展**:随着Web技术的演进,CSS也在持续发展,引入了例如变量、混合、动画等功能,以及更高级的布局技术如CSS Grid和Flexbox,这些都增强了CSS的表达能力和布局的灵活性。 ### 压缩包子文件的文件名称列表知识点:mapcar.github.io-master 1. **文件命名规则**:列表中的“mapcar.github.io-master”可能表示该项目的源代码或文件结构中的一个主分支或主版本。在版本控制中,master(或main)分支通常是项目的主分支,用于存放当前的稳定代码。 2. **版本控制**:虽然未直接提及,但GitHub上的项目通常使用Git进行版本控制。Git是一个开源的分布式版本控制系统,用于跟踪在计算机上协作工作的软件更改,允许用户查看代码变更历史,以及与其他开发者协作。 3. **项目文件结构**:“-master”后缀表明可能存在其他分支或版本(如develop、feature-branch等),这是软件开发中常见的分支管理策略,允许在不同的分支上同时进行新功能开发、修复和优化,而不影响主分支的稳定性。 4. **代码压缩和打包**:虽然描述中并未提到,但“压缩包子文件”可能是指经过压缩和打包的项目文件。在Web开发中,为了优化加载时间和减少HTTP请求,通常会将多个CSS文件压缩成一个文件。打包过程也可能涉及到将JavaScript或CSS资源进行模块化处理,以提高加载效率。 总结起来,以上提到的文件信息涵盖了项目托管、纯CSS布局技术、开源许可证使用、版本控制实践等方面的知识点。通过这些信息,可以对该项目的性质、目标、开发方式和技术栈有一个基本的了解。

相关推荐

filetype

对于SKILL脚本:;; rebuild_parser_core.il procedure(recreate_parser_system() ;; 在重建函数开头添加 unless(boundp('axlDBDesignInit) ;; 加载最基础数据库模块 loadi("db_sqlite.il") loadi("db_core.il") axlShell("set -n dsn_auto_create_new on") ) ;; ===== 1. 初始化数据库 ===== axlDBDesignInit("temp_rebuild") ; 创建临时设计 axlSetFindFilter(?enabled '("all" "noall")) ;; ===== 2. 重建核心索引 ===== ;; 焊盘系统 axlPadstackInit() axlPadstackLoadLibrary("default" t) axlPadstackLoadLibrary("common" t) ;; 封装系统 axlDBCreateShapeSymbolIndex() axlDBCreateDeviceIndex() ;; 设计规则系统 axlDBCreateConstraintIndex() axlDBCreateTechFileIndex() ;; ===== 3. 重新加载核心模块 ===== loadi("db_padstack.il") ; 焊盘解析模块 loadi("db_symbol.il") ; 封装解析模块 loadi("db_techfile.il") ; 技术文件模块 loadi("db_drc.il") ; 设计规则模块 ;; ===== 4. 重建内存索引 ===== axlDBRecreateIndices('(padstack symbol device constraint)) axlDBRecreateIndices('(net shape via)) ;; ===== 5. 验证系统 ===== ;; 生成系统健康报告 report_file = "./parser_rebuild_report.txt" axlUIViewFileCreate(report_file) ;; 检查关键模块状态 fprintf(report_file "===== 核心模块状态 =====\n") fprintf(report_file "Padstack系统: %s\n" (if boundp('axlPadstacks) then "正常" else "异常")) fprintf(report_file "Symbol系统: %s\n" (if boundp('axlDBCreateSymbol) then "正常" else "异常")) fprintf(report_file "DRC系统: %s\n" (if boundp('axlDRCGet') then "正常" else "异常")) ;; 检查默认元素 fprintf(report_file "\n===== 默认元素验证 =====\n") fprintf(report_file "标准焊盘: %L\n" (mapcar 'car axlPadstacks())) fprintf(report_file "基础封装: %L\n" (axlGetParam("symbolPaths")->value)) axlUIViewFileClose(report_file) printf("重建完成! 报告已保存至 %s\n" report_file) )报以下错误

filetype

对于SKILL脚本:;; rebuild_parser_core.il procedure(recreate_parser_system() ;; 在重建函数开头添加 unless(boundp('axlDBDesignInit) ;; 加载最基础数据库模块 loadi(“db_sqlite.il”) loadi(“db_core.il”) axlShell(“set -n dsn_auto_create_new on”) ) ;; ===== 1. 初始化数据库 ===== axlDBDesignInit(“temp_rebuild”) ; 创建临时设计 axlSetFindFilter(?enabled '(“all” “noall”)) ;; ===== 2. 重建核心索引 ===== ;; 焊盘系统 axlPadstackInit() axlPadstackLoadLibrary("default" t) axlPadstackLoadLibrary("common" t) ;; 封装系统 axlDBCreateShapeSymbolIndex() axlDBCreateDeviceIndex() ;; 设计规则系统 axlDBCreateConstraintIndex() axlDBCreateTechFileIndex() ;; ===== 3. 重新加载核心模块 ===== loadi("db_padstack.il") ; 焊盘解析模块 loadi("db_symbol.il") ; 封装解析模块 loadi("db_techfile.il") ; 技术文件模块 loadi("db_drc.il") ; 设计规则模块 ;; ===== 4. 重建内存索引 ===== axlDBRecreateIndices('(padstack symbol device constraint)) axlDBRecreateIndices('(net shape via)) ;; ===== 5. 验证系统 ===== ;; 生成系统健康报告 report_file = "./parser_rebuild_report.txt" axlUIViewFileCreate(report_file) ;; 检查关键模块状态 fprintf(report_file "===== 核心模块状态 =====\n") fprintf(report_file "Padstack系统: %s\n" (if boundp('axlPadstacks) then "正常" else "异常")) fprintf(report_file "Symbol系统: %s\n" (if boundp('axlDBCreateSymbol) then "正常" else "异常")) fprintf(report_file "DRC系统: %s\n" (if boundp('axlDRCGet') then "正常" else "异常")) ;; 检查默认元素 fprintf(report_file "\n===== 默认元素验证 =====\n") fprintf(report_file "标准焊盘: %L\n" (mapcar 'car axlPadstacks())) fprintf(report_file "基础封装: %L\n" (axlGetParam("symbolPaths")->value)) axlUIViewFileClose(report_file) printf("重建完成! 报告已保存至 %s\n" report_file) ) 报以下错误:SYNTAX ERROR found at line 47 column 64 of file D:/Cadence/SPB_17.4/share/pcb/skill/rebuild_parser_core.il *Error* lineread/read: syntax error encountered in input *Error* load: error while loading file - "D:/Cadence/SPB_17.4/share/pcb/skill/rebuild_parser_core.il" at line 47

filetype

(defun c:OrthoDim ( / *error* ss plObj closedPts refPt dir dimLayer dimStyle upperPts lowerPts leftPts rightPts) (vl-load-com) ;; 错误处理函数 (defun *error* (msg) (if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (princ (strcat "\n错误: " msg)) ) (setvar "CMDECHO" 1) (princ) ) ;; 选择闭合多段线 (princ "\n选择闭合多段线: ") (setq ss (ssget ":S" '((0 . "LWPOLYLINE")))) (if (null ss) (progn (alert "未选择对象或选择无效!") (exit)) ) (setq plObj (vlax-ename->vla-object (ssname ss 0))) ;; 检查是否闭合 (if (not (vlax-get-property plObj 'Closed)) (progn (alert "所选多段线未闭合!") (exit)) ) ;; 获取顶点坐标 (setq closedPts (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (vlax-vla-object->ename plObj)) ) ) ) ;; 移除重复的闭合点 (if (equal (car closedPts) (last closedPts) 1e-6) (setq closedPts (reverse (cdr (reverse closedPts)))) ) ;; 获取参照点 (setq refPt (getpoint "\n在轮廓线上拾取参照点: ")) (if (null refPt) (exit)) ;; 选择标注方向 (initget "H V") (setq dir (getkword "\n选择标注方向 [H水平/V垂直]: ")) (if (not dir) (setq dir "H")) ;; 获取当前标注样式和图层 (setq dimLayer (getvar "CLAYER")) (setq dimStyle (getvar "DIMSTYLE")) (setvar "CMDECHO" 0) (cond ((= dir "H") ; 水平方向标注 ;; 分组点集: 上方点(Y ≥ refPt Y) 和 下方点(Y ≤ refPt Y) (setq upperPts (vl-sort (vl-remove-if-not '(lambda (pt) (>= (cadr pt) (cadr refPt))) closedPts ) '(lambda (a b) (< (car a) (car b))) ) ) (setq lowerPts (vl-sort (vl-remove-if-not '(lambda (pt) (<= (cadr pt) (cadr refPt))) closedPts ) '(lambda (a b) (< (car a) (car b))) ) ) ;; 去重处理 (setq upperPts (LM:Unique upperPts)) (setq lowerPts (LM:Unique lowerPts)) ;; 计算标注位置 (setq upperY (apply 'max (mapcar 'cadr upperPts))) (setq lowerY (apply 'min (mapcar 'cadr lowerPts))) (setq upperDimLineY (+ upperY 30)) (setq lowerDimLineY (- lowerY 30)) ;; 创建上方标注 (if (> (length upperPts) 1) (progn (command "_.DIMLINEAR" (car upperPts) (cadr upperPts) (list (car (car upperPts)) upperDimLineY) ) (command "_.DIMCONTINUE") (foreach pt (cddr upperPts) (command pt) ) (command "") ) ) ;; 创建下方标注 (if (> (length lowerPts) 1) (progn (command "_.DIMLINEAR" (car lowerPts) (cadr lowerPts) (list (car (car lowerPts)) lowerDimLineY) ) (command "_.DIMCONTINUE") (foreach pt (cddr lowerPts) (command pt) ) (command "") ) ) ) ((= dir "V") ; 垂直方向标注 ;; 分组点集: 右侧点(X ≥ refPt X) 和 左侧点(X ≤ refPt X) (setq rightPts (vl-sort (vl-remove-if-not '(lambda (pt) (>= (car pt) (car refPt))) closedPts ) '(lambda (a b) (< (cadr a) (cadr b))) ) ) (setq leftPts (vl-sort (vl-remove-if-not '(lambda (pt) (<= (car pt) (car refPt))) closedPts ) '(lambda (a b) (< (cadr a) (cadr b))) ) ) ;; 去重处理 (setq rightPts (LM:Unique rightPts)) (setq leftPts (LM:Unique leftPts)) ;; 计算标注位置 (setq rightX (apply 'max (mapcar 'car rightPts))) (setq leftX (apply 'min (mapcar 'car leftPts))) (setq rightDimLineX (+ rightX 30)) (setq leftDimLineX (- leftX 30)) ;; 创建右侧标注 (if (> (length rightPts) 1) (progn (command "_.DIMLINEAR" (car rightPts) (cadr rightPts) (list rightDimLineX (cadr (car rightPts))) ) (command "_.DIMCONTINUE") (foreach pt (cddr rightPts) (command pt) ) (command "") ) ) ;; 创建左侧标注 (if (> (length leftPts) 1) (progn (command "_.DIMLINEAR" (car leftPts) (cadr leftPts) (list leftDimLineX (cadr (car leftPts))) ) (command "_.DIMCONTINUE") (foreach pt (cddr leftPts) (command pt) ) (command "") ) ) ) ) (setvar "CMDECHO" 1) (princ "\n正交标注创建完成!") (princ) ) ;; 辅助函数: 列表去重 (defun LM:Unique (l / x r) (while l (setq x (car l) l (vl-remove x (cdr l)) r (cons x r) ) ) (reverse r) )

filetype

(defun c:gjtx (/ *error* oldCmdEcho oldOsmode pline1 pline2 entType1 entType2 intPoints breakPoint radius breakPline otherPline breakData breakLayer breakParam distAtParam tangent normal startPoint endPoint startParam endParam paramOffset sidePoint vec1 vec2 crossProduct arcDirection arcEnt arcCenter arcData) ;; 错误处理函数 (defun *error* (msg) (if oldCmdEcho (setvar "CMDECHO" oldCmdEcho)) (if oldOsmode (setvar "OSMODE" oldOsmode)) (if (not (member msg '("Function cancelled" "quit / exit abort"))) (princ (strcat "\n错误: " msg)) ) (princ) ) ;; 保存系统变量 (setq oldCmdEcho (getvar "CMDECHO")) (setq oldOsmode (getvar "OSMODE")) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) ;; 选择两条图元 (while (not (and (setq pline1 (car (entsel "\n选择第一条线或多段线: "))) (setq entType1 (cdr (assoc 0 (entget pline1)))) (member entType1 '("LINE" "LWPOLYLINE" "POLYLINE")))) (princ "\n必须选择直线或多段线!") ) (while (not (and (setq pline2 (car (entsel "\n选择第二条线或多段线: "))) (setq entType2 (cdr (assoc 0 (entget pline2)))) (member entType2 '("LINE" "LWPOLYLINE" "POLYLINE")))) (princ "\n必须选择直线或多段线!") ) ;; 获取交点 (setq intPoints (vlax-invoke (vlax-ename->vla-object pline1) 'IntersectWith (vlax-ename->vla-object pline2) acExtendNone)) (if (not intPoints) (progn (princ "\n未找到交点!") (exit) ) ) ;; 准备交点数据 (setq breakPoint (list (nth 0 intPoints) (nth 1 intPoints) (nth 2 intPoints))) (setq arcCenter breakPoint) ;; 获取半径 (initget 7) ; 不允许零和负值 (setq radius (getdist breakPoint "\n指定跳线圆弧半径: ")) ;; 确定要打断的线 (initget "1 2") (setq breakPline (getkword "\n选择要打断的线 (1=第一条/2=第二条) [1]: ")) (if (not breakPline) (setq breakPline "1")) (if (= breakPline "1") (setq breakPline pline1 otherPline pline2) (setq breakPline pline2 otherPline pline1) ) ;; 获取打断线的图层 (setq breakData (entget breakPline)) (setq breakLayer (cdr (assoc 8 breakData))) ;; 获取打断点参数 (setq breakParam (vlax-curve-getParamAtPoint breakPline breakPoint)) (setq distAtParam (vlax-curve-getDistAtParam breakPline breakParam)) (if (not (and breakParam distAtParam)) (progn (princ "\n无法确定曲线参数或距离!") (exit) ) ) ;; 计算圆弧起点和终点 (setq tangent (vlax-curve-getFirstDeriv breakPline breakParam)) (setq normal (list (- (cadr tangent)) (car tangent) 0.0)) (setq normal (mapcar '/ normal (list (distance '(0 0 0) normal) (distance '(0 0 0) normal) 1.0))) (setq startPoint (mapcar '+ arcCenter (mapcar '* (list (- radius) (- radius) 0.0) normal))) (setq endPoint (mapcar '+ arcCenter (mapcar '* (list radius radius 0.0) normal))) ;; 确保点在线上 (setq startParam (vlax-curve-getParamAtPoint breakPline startPoint)) (setq endParam (vlax-curve-getParamAtPoint breakPline endPoint)) (if (or (null startParam) (null endParam)) (progn (setq paramOffset (/ radius distAtParam)) (setq startParam (max (vlax-curve-getStartParam breakPline) (- breakParam paramOffset))) (setq endParam (min (vlax-curve-getEndParam breakPline) (+ breakParam paramOffset))) (setq startPoint (vlax-curve-getPointAtParam breakPline startParam)) (setq endPoint (vlax-curve-getPointAtParam breakPline endParam)) ) ) ;; 确定圆弧方向 (princ "\n请点击选择圆弧方向 (在要弯曲的一侧点击): ") (setq sidePoint (getpoint breakPoint)) (setq vec1 (mapcar '- startPoint breakPoint)) (setq vec2 (mapcar '- sidePoint breakPoint)) (setq crossProduct (- (* (car vec1) (cadr vec2)) (* (cadr vec1) (car vec2)))) (setq arcDirection (if (> crossProduct 0) "CCW" "CW")) ;; 打断选定的线 (command "._break" breakPline "_non" startPoint "_non" endPoint) ;; 创建圆弧 (if (equal arcDirection "CCW") (command "._arc" "_non" startPoint "_c" "_non" arcCenter "_non" endPoint) (command "._arc" "_non" endPoint "_c" "_non" arcCenter "_non" startPoint) ) ;; 设置圆弧图层 (setq arcEnt (entlast)) (if (entget arcEnt) (progn (setq arcData (entget arcEnt)) (setq arcData (subst (cons 8 breakLayer) (assoc 8 arcData) arcData)) (entmod arcData) ) ) ;; 恢复系统变量 (setvar "CMDECHO" oldCmdEcho) (setvar "OSMODE" oldOsmode) (princ (strcat "\n操作完成,圆弧已创建在图层 \"" breakLayer "\"。")) (princ) ) (princ "\n跳线圆弧命令已加载,输入 gjtx 开始使用。") (princ) 修改代码使其兼容autocad2007~autocad2026

filetype

修改下面代码中的错误 (defun c:ExtractRoadWidthData (/ *error* centerline points totalPoints groupCount file filepath groupData leftData rightData allLeftData allRightData processGroupData getPointDistance getDistanceToCenterline processCenterDivider station startPoint getStation) (defun *error* (msg) (if file (close file)) (if (not (wcmatch (strcase msg) "*BRE极,*CANCEL*,*EXIT*")) (princ (strcat "\n错误: " msg))) (princ) ) ; 计算两点之间的距离 (defun getPointDistance (p1 p2) (distance p1 p2) ) ; 计算点到中心线的距离(带符号,左侧为正,右侧为负) (defun getDistanceToCenterline (pt centerline / param closestPt) (setq closestPt (vlax-curve-getClosestPointTo centerline pt)) (setq param (vlax-curve-getParamAtPoint centerline closest极)) (distance pt closestPt) ) ; 计算桩号(点到中心线起点的曲线距离) (def极 getStation (pt centerline) (vlax-curve-getDistAtPoint centerline (vlax-curve-getClosestPointTo centerline pt)) ) ; 处理中分带宽度计算 (defun processCenterDivider (d4 d5 centerline / dist4 dist5) (setq dist4 (getDistanceToCenterline d4 centerline)) (setq dist5 (getDistanceToCenterline d5 centerline)) (cond ((and (>= dist4 0) (>= dist5 0)) ; 两点都在左侧 (list (- dist4 dist5) (- 0 dist5)) ) ((and (< dist4 0) (< dist5 0)) ; 两点都在右侧 (list (- 0 dist4) (- dist5 dist4)) ) (t ; 两点在中心线两侧 (list dist4 dist5) ) ) ) ; 处理一组8个点的数据 (defun processGroupData (points centerline / distances leftWidths rightWidth极 centerDivider station) ; 极算桩号(使用第一个点到中心线的垂足点) (setq station (getStation (car points) centerline)) ; 计算相邻点之间的距离 (setq distances (mapcar 'getPointDistance points (cdr points))) ; 提取左侧宽度数据 (setq leftWidths (list (nth 0 distances) ; 土路肩宽度 (nth 1 distances) ; 硬路肩宽度 (nth 2 distances))) ; 行车道宽度 ; 计算中分带宽度 (setq centerDivider (processCenterDivider (nth 3 points) (nth 4 points) centerline)) ; 提取右侧宽度数据 (setq rightWidths (list (nth 4 distances) ; 右侧行车道宽度 (nth 5 distances) ; 右侧硬路肩宽度 (nth 6 distances))) ; 右侧土路肩宽度 ; 组合最终数据(按照要求的格式:桩号、中分带宽度、路面宽度、0、硬路肩、土路肩极0) (list (append (list station) ; 桩号 (list (car centerDivider)) ; 左侧中分带宽度 (list (nth 2 distances)) ; 左侧路面宽度(行车道) (list 0.0) ; 固定0值 (list (nth 1 distances)) ; 左侧硬路肩宽度 (list (nth 0 distances)) ; 左侧土路肩宽度 (list 0.0)) ; 固定0值 (append (list station) ; 桩号 (list (cadr centerDivider)) ; 右侧中分带宽度 (list (nth 4 distances)) ; 右侧路面宽度(行车道) (list 0.极) ; 固定0值 (list (nth 5 distances)) ; 右侧硬路肩宽度 (list (nth 6 distances)) ; 右侧土路肩宽度 (list 0.0))) ; 固定0值 ) ; 主程序 (vl-load-com) ; 选择道路中心线 (setq centerline (car (entsel "\n选择道路中心线: "))) (if (not centerline) (progn (princ "\n未选择中心线!") (exit)) ) ; 获取点数据(按组提示) (setq points '()) (setq groupCount 0) (setq continue T) (while continue (princ (strcat "\n开始拾取第 " (itoa (1+ groupCount)) " 组点(共8个点)")) (setq groupPoints '()) (setq i 1) ; 拾取8个极 (while (<= i 8) (setq pt (getpoint (strcat "\n拾取第 " (itoa i) " 个点(按回车结束): "))) (if (not pt) (progn (setq continue nil) (exit) ) ) (setq groupPoints (cons pt groupPoints)) (setq i (极+ i)) ) (setq groupPoints (reverse groupPoints)) (setq points (append points groupPoints)) (setq groupCount (1+ groupCount)) ; 询问是否继续拾取下一组(按回车继续,输入N结束) (princ "\n按回车继续拾取下一组,输入N结束") (initget "N") (setq answer (getkword "\n是否继续拾取下一组点?(按回车继续/N结束): ")) (if (= answer "N") (setq continue nil) (setq continue T) ) ) ; 检查点数是否足够 (if (< (length points) 8) (progn (princ "\n点数不足8个!") (exit)) ) ; 获取保存文件路径 (setq filepath (getfiled "选择保存文件" "" "txt" 1)) (if (not filepath) (progn (princ "\n未选择保存路径!") (exit)) ) ; 打开文件 (setq file (open filepath "w")) (if (not file) (progn (princ "\n无法创建文件!") (exit)) ) ; 写入文件头极 (write-line "HINTCAD6.00_WID_SHUJU" file) (write-line "[LEFT]" file) ; 处理点数据 (setq allLeftData '()) (setq allRightData '()) (setq i 0) (while (>= (- (length points) i极 8) (setq groupData (processGroupData (subseq points i 8) centerline)) (setq allLeftData (cons (car groupData) allLeftData)) (setq allRightData (cons (cadr groupData) allRightData)) (setq i (+ i 8)) ) (setq allLeftData (reverse allLeftData)) (setq allRightData (reverse allRightData)) (setq groupCount (length allLeftData)) ; 写入数据(按照要求的格式) (if (> groupCount 0) (progn ; 写入第一组左侧数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos极 2 3) "\t")) (car allLeftData))) file) (write-line "" file) ; 处理后续数据组 (setq i 1) (while (< i groupCount) (if (= (rem i 2) 1) ; 奇数索引组(第二组、第四组等) (progn ; 复制前一组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (nth (1- i) allLeftData))) file) (write-line "" file) (write-line "" file) ; 空行 ; 当前组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (nth i allLeftData))) file) (write-line "" file) ) ; 偶数索引组(第三组、第五组等) (progn ; 复制前一组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (nth (1- i) allLeftData))) file) (write-line "" file) (write-line "" file) ; 空行 ; 当前组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (nth i allLeftData))) file) (write-line "" file) ) ) (setq i (1+ i)) ) ; 写入右侧数据 (write-line "[RIGHT]" file) ; 写入第一组右侧数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (car allRightData))) file) (write-line "" file) ; 处理后续右侧数据组 (setq i 1) (while (< i groupCount) 极 (rem i 2) 1) ; 奇数索引组 (progn ; 复制前一组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (nth (1- i) allRightData))) file) (write-line "" file) (write-line "" file) ; 空行 ; 当前组数据 (write-line (apply 'strcat (mapcar '(lambda (x极 (strcat (rtos x 2 3) "\t")) (nth i allRightData))) file) (write-line "" file) ) ; 偶数索引组 (progn ; 复制前一组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3极 "\t")) (nth (1- i) allRightData))) file) (write-line "" file) (write-line "" file) ; 空行 ; 当前组数据 (write-line (apply 'strcat (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (nth i allRightData))) file) (write-line "" file) ) ) (setq i (1+ i)) ) ) ) (close file) (princ (strcat "\n数据已保存到: " file极)) (princ) ) ; 辅助函数:获取子序列 (defun subseq (lst start leng / n result) (setq n 0) (setq result '()) (foreach item lst (if (and (>= n start) (< n (+ start leng))) (setq result (cons item result))) (setq n (1+ n))) (reverse result) )

filetype

(defun c:d2(/ aCen cAng cCen cPl cRad cReg fDr it lCnt lLst mSp pCen pT1 pT2 ptLst R tHt tLst vlaPl vlaTab vLst cTxt oldCol nPl clFlg actDoc tPt1 tPt2 cAng tiPt oSnp *error*) (vl-load-com) (defun Extract_DXF_Values(Ent Code) (mapcar 'cdr (vl-remove-if-not '(lambda(a)(=(car a)Code)) (entget Ent))) ); end of (defun *error*(msg) (setvar "CMDECHO" 1) (if oSnp(setvar "OSMODE" oSnp)) (if mSp(vla-EndUndoMark actDoc)) (princ) ); end of *error* (if (and (setq cPl(entsel "\n选择多段线 ")) (= "LWPOLYLINE"(car(Extract_DXF_Values(car cPl)0))) ); end and (progn (princ "\n稍等... \n") (setq vlaPl(vlax-ename->vla-object(car cPl)) ptLst(mapcar 'append (setq vLst(Extract_DXF_Values(car cPl)10)) (mapcar 'list(Extract_DXF_Values(car cPl)42))) r 2 lCnt 0 tLst '((1 0 "孔号")(1 1 "X")(1 2 "Y")(1 3 "Z")) actDoc(vla-get-ActiveDocument (vlax-get-acad-object)) mSp(vla-get-ModelSpace actDoc) tHt(getvar "TEXTSIZE") ); end setq (vla-StartUndoMark actDoc) (setvar "CMDECHO" 0) (setq oSnp(getvar "OSMODE")) (foreach vert ptLst (setq vert(trans vert 0 1) tLst(append tLst (list(list r 0(itoa(1+ lCnt))) (list r 1(rtos(car vert)2 1)) (list r 2(rtos(cadr vert)2 1)) (list r 3 "")))) (if(and (/= 0.0(last vert)) (setq pt1(vlax-curve-GetPointAtParam vlaPl lCnt)) (setq pt2(vlax-curve-GetPointAtParam vlaPl(1+ lCnt))) ); end and (setq r(1+ r) cRad(abs(/(distance pt1 pt2) 2(sin(/(* 4(atan(abs(last vert))))2)))) aCen(vlax-curve-GetPointAtParam vlaPl(+ 0.5 lCnt)) fDr(vlax-curve-getFirstDeriv vlaPl (vlax-curve-getParamAtPoint vlaPl aCen)) pCen(trans (polar aCen(-(if(minusp(last vert)) pi(* 2 pi)) (atan(/(car fDr)(cadr fDr))))cRad)0 1) tLst(append tLst(list (list r 0 "center") (list r 1(rtos(car pCen)2 1)) (list r 2(rtos(cadr pCen)2 1)) (list r 3(rtos cRad 2 1)))) ); end setq ); end if (setq r(1+ r) lCnt(1+ lCnt)) ); end foreach (setq vlaTab(vla-AddTable mSp (vlax-3D-point '(0 0 0)) (+ 1(/(length tLst)4)) 4 (* 3 tHt)(* 10 tHt))) (foreach i tLst (vl-catch-all-apply 'vla-SetText(cons vlaTab i)) (vla-SetCellTextHeight vlaTab(car i)(cadr i)tHt) (vla-SetCellAlignment vlaTab(car i)(cadr i)acMiddleCenter) ); end foreach (vla-put-VertCellMargin vlaTab (* 0.75 tHt)) (vla-put-Height vlaTab(* 1.75(/(length tLst)4))) (vla-SetColumnWidth vlaTab 0 (* 5 tHt)) (vla-SetColumnWidth vlaTab 0 (* 5 tHt)) ;;; (vla-put-RepeatTopLabels vlaTab :vlax-true) ;;; (vla-put-BreakSpacing vlaTab (* 3 tHt)) (vla-DeleteRows vlaTab 0 1) (princ "\n-->指定插入点 ") (command "_.copybase" (trans '(0 0 0)0 1)(entlast) "") (command "_.erase" (entlast) "") (command "_.pasteclip" pause) (if(= :vlax-true(vla-get-Closed vlaPl)) (progn (setq nPl(vla-Copy vlaPl)) (command "_.region" (entlast) "") (setq cCen(vlax-get(setq cReg (vlax-ename->vla-object(entlast)))'Centroid)) (vla-Delete cReg) (setq clFlg T) ); end progn ); end if (setq lCnt 0) (foreach v vLst (if clFlg (setq cAng(angle cCen(trans v 0 1)) iPt(polar v cAng (* 2 tHt))) (setq tPt1(vlax-curve-GetPointAtParam vlaPl (- lCnt 0.0000001)) tPt2(vlax-curve-GetPointAtParam vlaPl (+ lCnt 0.0000001)) iPt(polar v(+(* pi 0.5)(if(minusp (setq cAng(angle tPt1(if tPt2 tPt2 (polar tPt1(* 0.5 pi)0.0000001))))) cAng(- cAng)))(* 2 tHt)) ); end setq ); end if (setvar "OSMODE" 0) (setq cTxt(vla-AddText mSp(itoa(1+ lCnt)) (vlax-3d-point iPt) tHt) tiPt(vla-get-InsertionPoint cTxt) lCnt(1+ lCnt) ); end setq ); end foreach (setvar "OSMODE" oSnp) (setvar "CMDECHO" 1) (vla-EndUndoMark actDoc) ); end progn (princ "\n<!> It isn't LwPolyline! Quit. <!> ") ); end if (gc) (princ) ); end of c:d2选择多线LWPOLYLINE改为点

filetype

(defun c:AutoDimContour ( / ss ent obj pts closed basePt minPt maxPt i p1 p2) (vl-load-com) ; 确保VL函数加载 ; 选择多段线 (if (not (setq ss (ssget ":S" '((0 . "LWPOLYLINE"))))) (exit) ) (setq ent (ssname ss 0)) (setq obj (vlax-ename->vla-object ent)) ; 获取顶点坐标 (setq pts (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent) ) ) ) ; 正确计算边界框 (setq minPt (apply 'mapcar (cons 'min pts))) (setq maxPt (apply 'mapcar (cons 'max pts))) ; 获取基准点(带错误处理) (while (not basePt) (setq basePt (getpoint "\n指定标注放置基准点: ")) (if (null basePt) (exit)) ; 用户取消则退出 ) ; 设置标注样式 (command "DIMSTYLE" "R" "Standard") ; 创建正交标注 (setq i 0) (repeat (1- (length pts)) (setq p1 (nth i pts) p2 (nth (setq i (1+ i)) pts)) (cond ((equal (car p1) (car p2) 1e-6) ; 垂直线 (command "DIMLINEAR" p1 p2 (list (if (> (car basePt) (car maxPt)) (+ (car maxPt) 10) (- (car minPt) 10) ) (/ (+ (cadr p1) (cadr p2)) 2) ) ) ) ((equal (cadr p1) (cadr p2) 1e-6) ; 水平线 (command "DIMLINEAR" p1 p2 (list (/ (+ (car p1) (car p2)) 2) (if (> (cadr basePt) (cadr maxPt)) (+ (cadr maxPt) 10) (- (cadr minPt) 10) ) ) ) ) ) ) ; 处理闭合线段 (if (and (vlax-get-property obj 'Closed) (setq p1 (last pts) p2 (car pts))) (cond ((equal (car p1) (car p2) 1e-6) (command "DIMLINEAR" p1 p2 (list (if (> (car basePt) (car maxPt)) (+ (car maxPt) 10) (- (car minPt) 10) ) (/ (+ (cadr p1) (cadr p2)) 2) ) ) ) ((equal (cadr p1) (cadr p2) 1e-6) (command "DIMLINEAR" p1 p2 (list (/ (+ (car p1) (car p2)) 2) (if (> (cadr basePt) (cadr maxPt)) (+ (cadr maxPt) 10) (- (cadr minPt) 10) ) ) ) ) ) ) ; 创建连续标注 (command "DIMCONTINUE") (while (> (getvar "CMDACTIVE") 0) (command pause) ) (princ "\n标注完成!") (princ) ) 把代码中的标注样式改为当前标注样式

filetype

(defun c:SCG (/ *error* cmde os ss input color-value found layer-colors) ;; 错误处理函数 (defun *error* (msg) (if os (setvar 'osmode os)) (setvar 'cmdecho cmde) (princ (strcat "\n错误: " msg)) (princ) ) ;; 增强型颜色解析函数 (defun parse-color (str / parts r g b) (cond ;; 处理RGB格式 (支持带空格的输入) ((vl-string-search "," str) (setq parts (mapcar 'atoi (split-string str "[, ]+"))) (if (and (= (length parts) 3) (<= 0 (car parts) 255) (<= 0 (cadr parts) 255) (<= 0 (caddr parts) 255)) (list :rgb (+ (lsh (car parts) 16) (lsh (cadr parts) 8) (caddr parts)) (apply 'strcat (mapcar 'itoa parts))) (prompt "\n无效的RGB格式! 必须为三个0-255的整数,用逗号分隔 (如:255,0,0)"))) ;; 处理数字输入 ((numberp (setq num (read str))) (cond ((<= 0 num 255) (list :index num)) ((<= 256 num 16777215) (list :truecolor num)) (T (prompt "\n颜色值超出范围! 索引色为0-255,真彩色为256-16777215")))) ;; 处理颜色名称 (T (list :name (strcase str))) ) ) ;; 修复的图层缓存函数 (defun build-layer-colors (/ tbl layer) (setq tbl '()) (setq layer (tblnext "layer" T)) ; 获取第一个图层 (while layer (setq tbl (cons (cons (cdr (assoc 2 layer)) (cdr (or (assoc 62 layer) '(62 . 7)))) ; 默认颜色7 tbl)) (setq layer (tblnext "layer")) ) tbl ) ;; 主程序 (setq cmde (getvar 'cmdecho)) (setq os (getvar 'osmode)) (setvar 'cmdecho 0) (setvar 'osmode 0) (setq found nil) ;; 用户输入处理 (initget "ByBlock ByLayer") (setq input (cond ((getkword "\n选择颜色类型 [ByBlock/ByLayer] <直接输入>: ")) ((getstring "\n输入颜色值 (索引色/真彩色/RGB): ")) )) (cond ;; 处理ByBlock ((= input "ByBlock") (if (setq ss (ssget "_X" '((62 . 0)))) (progn (sssetfirst nil ss) (setq found T) (princ (strcat "\n找到 " (itoa (sslength ss)) " 个ByBlock对象"))) (princ "\n未找到ByBlock颜色的对象"))) ;; 处理ByLayer ((= input "ByLayer") (if (setq ss (ssget "_X" '((62 . 256)))) (progn (sssetfirst nil ss) (setq found T) (princ (strcat "\n找到 " (itoa (sslength ss)) " 个ByLayer对象"))) (princ "\n未找到ByLayer颜色的对象"))) ;; 处理颜色值输入 (T (if (setq color-value (parse-color input)) (progn (setq layer-colors (build-layer-colors)) ; 构建图层缓存 (cond ;; 索引色处理 (0-255) ((eq (car color-value) :index) (setq ss (ssadd)) (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_X")))) (setq entdata (entget ent)) (setq color-index (cdr (assoc 62 entdata))) (cond ;; 直接匹配索引色 ((= color-index (cadr color-value)) (ssadd ent ss)) ;; 通过图层匹配 ((and (= color-index 256) ; ByLayer (setq layer-name (cdr (assoc 8 entdata))) (setq layer-color (cdr (assoc layer-name layer-colors))) (= layer-color (cadr color-value))) (ssadd ent ss)) ) ) (if (> (sslength ss) 0) (progn (sssetfirst nil ss) (setq found T) (princ (strcat "\n找到 " (itoa (sslength ss)) " 个索引色对象"))) (princ (strcat "\n未找到索引色: " (itoa (cadr color-value)) "的对象"))) ) ;; 真彩色处理 ((eq (car color-value) :rgb) (setq ss (ssget "_X" (list '(-4 . "<OR") (cons 420 (cadr color-value)) ; 真彩色整数 (cons 430 (caddr color-value)) ; 真彩色字符串 '(-4 . "OR>")))) (if ss (progn (sssetfirst nil ss) (setq found T) (princ (strcat "\n找到 " (itoa (sslength ss)) " 个RGB对象"))) (princ (strcat "\n未找到RGB: " (caddr color-value) "的对象"))) ) ;; 其他情况 (T (princ "\n不支持的颜色格式"))) ) (princ "\n无效的颜色输入")) ) ) ;; 恢复环境 (setvar 'osmode os) (setvar 'cmdecho cmde) (princ) ) ;;; 辅助函数:增强型字符串分割 (defun split-string (str regex / pos lst) (while (setq pos (vl-string-search regex str)) (setq lst (cons (substr str 1 pos) lst) str (substr str (+ pos 1 (strlen regex)))) ) (reverse (cons str lst)) ) ;;; 加载VL函数 (兼容旧版AutoCAD) (if (not (vl-string-search "vl-" (getvar "acadver"))) (arxload "vl.arx")) 上述代码依旧无法通过直接选择ByBlock(0)/ByLayer(256),或者直接输入(255,0,0)来选择对象

filetype

CAD中采用lisp开发,定义命令为TF,批量选择文件夹内扩展名为tf和ctr的两种文件,如果是字母编号,以ABCD字母顺充排序,依次绘制各扩展名为TF数据中的zzb,yzb数据,每个tf数据中的Y坐标加1000,相当于每个土方数据Y坐标+1000上下位次排列隔开,从第三行开始读取数据,将n1,n2,n3,n4,n5,n6……,依次从左到依次循环赋值,将n16-n6赋值给zgc,将zzb的坐标设置为点坐标(n1 zgc),向下依次循环所有zgc坐标点添加到点集;n17-n7的数值赋值给ygc,将yzb的坐标设置为(n1,ygc),向下依次循环所有yc坐标点添加到点集;在cad中绘制多段线ygc点集,右高程zzb的点集Y坐标统一加1000,在CAD中画出点集zzb和yzb两条多段线,绘制多段线完成后,前面两行数据不读取,从第三行开始,搜索TF的同名文件的CTR文件(无同名文件时,搜索首字或字母/字符相同的CTR文件),从QHSJ.DAT下一行开始,将n1,n2,n3,n4,n5,n6……,依次从左到依次循环赋值,循环到HDSJ.DAT结束,将n1赋值给qwzbq,将n2赋值给qwzbz,qlmc设置为n4,以(qwzbq 水平基线Y坐标(是指各个互通的水平基本线0 1000 2000 3000))和(qwzbz 水平基线Y坐标)为底边,绘制一个高为100的矩形,在矩形正中间写上文字qlmc;向下依次循环绘制出矩形和qlmc,将图层设置为对应文件名+桥梁,颜色为4;均无同名文件,则只绘制水平基线和高差线,跳过绘制桥梁步骤,绘制下一个,TF土方格式如下: HINTCAD6.00_TF_SHUJU //[ 桩 号 ] [挖方面积] [填方面积] [中桩填挖] [路基左宽] [路基右宽] [基缘左高] [基缘右高] [左坡脚距] [右坡脚距] [左坡脚高] [右坡脚高] [左沟缘距] [右沟缘距][左护坡道宽][右护坡道宽][左沟底高][右沟底高] [左沟心距] [右沟心距] [左沟深度] [右沟深度] [左用地宽] [右用地宽] [清表面积] [顶超面积] [左超面积] [右超面积] [计排水沟][左沟面积填][左沟面积挖][右沟面积填][右沟面积挖][路槽面积填][路槽面积挖][清表宽度][清表厚度][挖1类面积][挖2类面积][挖3类面积][挖4类面积][挖5类面积][挖6类面积][左路槽B] [右路槽B] [左路槽C] [右路槽C] [左垫层] [右垫层] [左路床] [右路床][左土肩培土][右土肩培土][左包边土] [右包边土][左边沟回填][右边沟回填][左截沟填][左截沟挖][右截沟填][右截沟挖][挖台阶面积][填1类面积][填2类面积][填3类面积][填4类面积][填5类面积][填6类面积][弃1类面积][弃2类面积][弃3类面积][弃4类面积][弃5类面积][弃6类面积] 0.000 2.547 0.009 0.000 -2.750 2.750 29.273 29.341 -4.310 2.763 29.393 29.332 -2.750 2.763 0.000 0.000 0.000 0.000 -0.000 0.000 -0.000 0.000 -7.310 5.763 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 -0.019 2.218 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" 20.000 2.477 0.022 -0.007 -2.750 2.750 29.764 29.831 -4.293 2.807 29.850 29.793 -2.750 2.807 0.000 0.000 0.000 0.000 -0.000 0.000 -0.000 0.000 -7.293 5.807 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 -0.040 2.216 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" 40.000 2.526 0.078 -0.037 2.750 -2.750 29.661 29.729 3.004 -4.313 29.492 29.854 3.004 -2.750 0.000 0.000 0.000 0.000 0.000 -0.000 0.000 -0.000 6.004 -7.313 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 -0.052 2.198 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" 60.000 3.558 0.000 -0.009 -2.750 -2.750 28.892 28.959 -2.963 -4.570 28.892 29.600 -2.750 -2.750 0.000 0.000 0.000 0.000 -0.000 -0.000 -0.000 -0.000 -5.963 -7.570 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 0.000 2.268 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 "" ctr文件格式如下: QHSJ.DAT 726.000 765.000 745.500 上跨乡道中桥 3*13m PC低高度密肋式T梁/0° 90.0000 0.0000 0 1 0 812.000 892.000 852.000 石塘河中桥 4*20m PC低高度密肋式T梁/-20° 110.0000 0.0000 0 1 0 2684.500 2764.500 2724.500 马桥河中桥 4*20m PC低高度密肋式T梁/0° 90.0000 0.0000 0 1 0 3953.000 4013.000 3983.000 上跨乡道中桥 3*20m PC低高度密肋式T梁/40° 50.0000 0.0000 0 1 0 4350.500 4389.500 4370.000 上跨四合路1号中桥 3*13m PC低高度密肋式T梁/0° 90.0000 0.0000 0 1 0 5482.000 5521.000 5501.500 上跨四合路2号中桥 3*13m PC低高度密肋式T梁/10° 80.0000 0.0000 0 1 0 HDSJ.DAT

yueyhangcheuk
  • 粉丝: 43
上传资源 快速赚钱