js实现截图功能.txt 1)prototype.js
var Class = {
create: function() {
return function() { this.initialize.apply(this, arguments); }
}
}
var Extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
}
var Bind = function(object, fun) {
return function() {
return fun.apply(object, arguments);
}
}
var BindAsEventListener = function(object, fun) {
var args = Array.prototype.slice.call(arguments).slice(2);
return function(event) {
return fun.apply(object, [event || window.event].concat(args));
}
}
var CurrentStyle = function(element) {
return element.currentStyle || document.defaultView.getComputedStyle(element,
null);
}
function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
};
function removeEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.removeEventListener) {
oTarget.removeEventListener(sEventType, fnHandler, false);
} else if (oTarget.detachEvent) {
oTarget.detachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = null;
}
};
2)ImgCropper.js
//图片切割
var ImgCropper = Class.create();
ImgCropper.prototype = {
//容器对象,控制层,图片地址
initialize: function(container, handle, url, options) {
this._Container = $(container); //容器对象
this._layHandle = $(handle); //控制层
this.Url = url; //图片地址
this._layBase = this._Container.appendChild(document.createElement("img")); //底层
this._layCropper = this._Container.appendChild(document.createElement("img")); //切割层
this._layCropper.onload = Bind(this, this.SetPos);
//用来设置大小
this._tempImg = document.createElement("img");
this._tempImg.onload = Bind(this, this.SetSize);
this.SetOptions(options);
this.Opacity = Math.round(this.options.Opacity);
this.Color = this.options.Color;
this.Scale = !!this.options.Scale;
this.Ratio = Math.max(this.options.Ratio, 0);
this.Width = Math.round(this.options.Width);
this.Height = Math.round(this.options.Height);
//设置预览对象
var oPreview = $(this.options.Preview); //预览对象
if (oPreview) {
oPreview.style.position = "relative";
oPreview.style.overflow = "hidden";
this.viewWidth = Math.round(this.options.viewWidth);
this.viewHeight = Math.round(this.options.viewHeight);
//预览图片对象
this._view = oPreview.appendChild(document.createElement("img"));
this._view.style.position = "absolute";
this._view.onload = Bind(this, this.SetPreview);
}
//设置拖放
this._drag = new Drag(this._layHandle, { Limit: true, onMove: Bind(this, this.SetPos), Transparent: true });
//设置缩放
this.Resize = !!this.options.Resize;
if (this.Resize) {
var op = this.options, _resize = new Resize(this._layHandle, { Max: true, onResize: Bind(this, this.SetPos) });
//设置缩放触发对象
op.RightDown && (_resize.Set(op.RightDown, "right-down"));
op.LeftDown && (_resize.Set(op.LeftDown, "left-down"));
op.RightUp && (_resize.Set(op.RightUp, "right-up"));
op.LeftUp && (_resize.Set(op.LeftUp, "left-up"));
op.Right && (_resize.Set(op.Right, "right"));
op.Left && (_resize.Set(op.Left, "left"));
op.Down && (_resize.Set(op.Down, "down"));
op.Up && (_resize.Set(op.Up, "up"));
//最小范围限制
this.Min = !!this.options.Min;
this.minWidth = Math.round(this.options.minWidth);
this.minHeight = Math.round(this.options.minHeight);
//设置缩放对象
this._resize = _resize;
}
//设置样式
this._Container.style.position = "relative";
this._Container.style.overflow = "hidden";
this._layHandle.style.zIndex = 200;
this._layCropper.style.zIndex = 100;
this._layBase.style.position = this._layCropper.style.position = "absolute";
this._layBase.style.top = this._layBase.style.left = this._layCropper.style.top = this._layCropper.style.left = 0; //对齐
//初始化设置
this.Init();
},
//设置默认属性
SetOptions: function(options) {
this.options = { //默认值
Opacity: 50, //透明度(0到100)
Color: "", //背景色
Width: 0, //图片高度
Height: 0, //图片高度
//缩放触发对象
Resize: false, //是否设置缩放
Right: "", //右边缩放对象
Left: "", //左边缩放对象
Up: "", //上边缩放对象
Down: "", //下边缩放对象
RightDown: "", //右下缩放对象
LeftDown: "", //左下缩放对象
RightUp: "", //右上缩放对象
LeftUp: "", //左上缩放对象
Min: false, //是否最小宽高限制(为true时下面min参数有用)
minWidth: 50, //最小宽度
minHeight: 50, //最小高度
Scale: false, //是否按比例缩放
Ratio: 0, //缩放比例(宽/高)
//预览对象设置
Preview: "", //预览对象
viewWidth: 0, //预览宽度
viewHeight: 0//预览高度
};
Extend(this.options, options || {});
},
//初始化对象
Init: function() {
//设置背景色
this.Color && (this._Container.style.backgroundColor = this.Color);
//设置图片
this._tempImg.src = this._layBase.src = this._layCropper.src = this.Url; //设置透明
if (isIE) {
this._layBase.style.filter = "alpha(opacity:" + this.Opacity + ")"; } else {
this._layBase.style.opacity = this.Opacity / 100;
}
//设置预览对象
this._view && (this._view.src = this.Url);
//设置缩放
if (this.Resize) {
with (this._resize) {
Scale = this.Scale; Ratio = this.Ratio; Min = this.Min; minWidth = this.minWidth; minHeight = this.minHeight;
}
}
},
//设置切割样式
SetPos: function() {
//ie6渲染bug
if (isIE6) { with (this._layHandle.style) { zoom = .9; zoom = 1; }; };
//获取位置参数
var p = this.GetPos();
//按拖放对象的参数进行切割
this._layCropper.style.clip = "rect(" + p.Top + "px " + (p.Left + p.Width) + "px " + (p.Top + p.Height) + "px " + p.Left + "px)";
//设置预览
this.SetPreview();
},
//设置预览效果
SetPreview: function() {
if (this._view) {
//预览显示的宽和高
var p = this.GetPos(), s = this.GetSize(p.Width, p.Height, this.viewWidth, this.viewHeight), scale = s.Height / p.Height;
//按比例设置参数
var pHeight = this._layBase.height * scale, pWidth = this._layBase.width * scale, pTop = p.Top * scale, pLeft = p.Left * scale;
//设置预览对象
with (this._view.style) {
//设置样式
width = pWidth + "px"; height = pHeight + "px"; top = -pTop + "px "; left = -pLeft + "px";
//切割预览图
clip = "rect(" + pTop + "px " + (pLeft + s.Width) + "px " + (pTop + s.Height) + "px " + pLeft + "px)";
}
}
},
//设置图片大小
SetSize: function() {
var s = this.GetSize(this._tempImg.width, this._tempImg.height, this.Width, this.Height);
//设置底图和切割图
this._layBase.style.width = this._layCropper.style.width = s.Width + "px"; this._layBase.style.height = this._layCropper.style.height = s.Height +
"px";
//设置拖放范围
this._drag.mxRight = s.Width; this._drag.mxBottom = s.Height;
//设置缩放范围
if (this.Resize) { this._resize.mxRight = s.Width; this._resize.mxBottom = s.Height; }
},
//获取当前样式
GetPos: function() {
with (this._layHandle) {
return { Top: offsetTop, Left: offsetLeft, Width: offsetWidth, Height: offsetHeight }
}
},
//获取尺寸
GetSize: function(nowWidth, nowHeight, fixWidth, fixHeight) {
var iWidth = nowWidth, iHeight = nowHeight, scale = iWidth / iHeight;
//按比例设置
if (fixHeight) { iWidth = (iHeight = fixHeight) * scale; }
if (fixWidth && (!fixHeight || iWidth > fixWidth)) { iHeight = (iWidth = fixWidth) / scale; }
//返回尺寸对象
return { Width: iWidth, Height: iHeight }
}
}
3)Drag.js
//拖放程序
var Drag = Class.create();
Drag.prototype = {
//拖放对象
initialize: function(drag, options) {
this.Drag = $(drag); //拖放对象
this._x = this._y = 0; //记录鼠标相对拖放对象的位置
this._marginLeft = this._marginTop = 0; //记录margin
//事件对象(用于绑定移除事件)
this._fM = BindAsEventListener(this, this.Move);
this._fS = Bind(this, this.Stop);
this.SetOptions(options);
this.Limit = !!this.options.Limit;
this.mxLeft = parseInt(this.options.mxLeft);
this.mxRight = parseInt(this.options.mxRight);
this.mxTop = parseInt(this.options.mxTop);
this.mxBottom = parseInt(this.options.mxBottom);
this.LockX = !!this.options.LockX;
this.LockY = !!this.options.LockY;
this.Lock = !!this.options.Lock;
this.onStart = this.options.onStart;
this.onMove = this.options.onMove;
this.onStop = this.options.onStop;
this._Handle = $(this.options.Handle) || this.Drag;
this._mxContainer = $(this.options.mxContainer) || null;
this.Drag.style.position = "absolute";
//透明
if(isIE && !!this.options.Transparent){
//填充拖放对象
with(this._Handle.appendChild(document.createElement("div")).style){
width = height = "100%"; backgroundColor = "#fff"; filter = "alpha(opacity:0)"; fontSize = 0;
}
}
//修正范围
this.Repair();
addEventHandler(this._Handle, "mousedown", BindAsEventListener(this, this.Start));
},
//设置默认属性
SetOptions: function(options) {
this.options = { //默认值
Handle: "", //设置触发对象(不设置则使用拖放对象)
Limit: false, //是否设置范围限制(为true时下面参数有用,可以是负数)
mxLeft: 0, //左边限制
mxRight: 9999, //右边限制
mxTop: 0, //上边限制
mxBottom: 9999, //下边限制
mxContainer: "", //指定限制在容器内
LockX: false, //是否锁定水平方向拖放
LockY: false, //是否锁定垂直方向拖放
Lock: false, //是否锁定
Transparent: false, //是否透明
onStart: function(){}, //开始移动时执行
onMove: function(){}, //移动时执行
onStop: function(){} //结束移动时执行
};
Extend(this.options, options || {});
},
//准备拖动
Start: function(oEvent) {
if(this.Lock){ return; }
this.Repair();
//记录鼠标相对拖放对象的位置
this._x = oEvent.clientX - this.Drag.offsetLeft;
this._y = oEvent.clientY - this.Drag.offsetTop;
//记录margin
this._marginLeft = parseInt(CurrentStyle(this.Drag).marginLeft) || 0;
this._marginTop = parseInt(CurrentStyle(this.Drag).marginTop) || 0;
//mousemove时移动 mouseup时停止
addEventHandler(document, "mousemove", this._fM);
addEventHandler(document, "mouseup", this._fS);
if(isIE){
//焦点丢失
addEventHandler(this._Handle, "losecapture", this._fS);
//设置鼠标捕获
this._Handle.setCapture();
}else{
//焦点丢失
addEventHandler(window, "blur", this._fS);
//阻止默认动作
oEvent.preventDefault();
};
//附加程序
this.onStart();
},
//修正范围
Repair: function() {
if(this.Limit){
//修正错误范围参数
this.mxRight = Math.max(this.mxRight, this.mxLeft + this.Drag.offsetWidth);
this.mxBottom = Math.max(this.mxBottom, this.mxTop + this.Drag.offsetHeight); //如果有容器必须设置position为relative或absolute来相对或绝对定位,并在获取offset之前设置
!this._mxContainer || CurrentStyle(this._mxContainer).position == "relative" || CurrentStyle(this._mxContainer).position == "absolute" || (this._mxContainer.style.position = "relative");
}
},
//拖动
Move: function(oEvent) {
//判断是否锁定
if(this.Lock){ this.Stop(); return; };
//清除选择
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
//设置移动参数
var iLeft = oEvent.clientX - this._x, iTop = oEvent.clientY - this._y;
//设置范围限制
if(this.Limit){
//设置范围参数
var mxLeft = this.mxLeft, mxRight = this.mxRight, mxTop = this.mxTop, mxBottom = this.mxBottom;
//如果设置了容器,再修正范围参数
if(!!this._mxContainer){
mxLeft = Math.max(mxLeft, 0);
mxTop = Math.max(mxTop, 0);
mxRight = Math.min(mxRight, this._mxContainer.clientWidth);
mxBottom = Math.min(mxBottom, this._mxContainer.clientHeight);
};
//修正移动参数
iLeft = Math.max(Math.min(iLeft, mxRight - this.Drag.offsetWidth), mxLeft);
iTop = Math.max(Math.min(iTop, mxBottom - this.Drag.offsetHeight), mxTop); }
//设置位置,并修正margin
if(!this.LockX){ this.Drag.style.left = iLeft - this._marginLeft + "px"; }
if(!this.LockY){ this.Drag.style.top = iTop - this._marginTop + "px"; }
//附加程序
this.onMove();
},
//停止拖动
Stop: function() {
//移除事件
removeEventHandler(document, "mousemove", this._fM);
removeEventHandler(document, "mouseup", this._fS);
if(isIE){
removeEventHandler(this._Handle, "losecapture", this._fS);
this._Handle.releaseCapture();
}else{
removeEventHandler(window, "blur", this._fS);
};
//附加程序
this.onStop();
}
};
4)Resize.js
//缩放程序
var Resize = Class.create();
Resize.prototype = {
//缩放对象
initialize: function(obj, options) {
this._obj = $(obj); //缩放对象
this._styleWidth = this._styleHeight = this._styleLeft = this._styleTop = 0; //样式参数
this._sideRight = this._sideDown = this._sideLeft = this._sideUp = 0; //坐标参数
this._fixLeft = this._fixTop = 0; //定位参数
this._scaleLeft = this._scaleTop = 0; //定位坐标
this._mxSet = function(){}; //范围设置程序
this._mxRightWidth = this._mxDownHeight = this._mxUpHeight = this._mxLeftWidth = 0; //范围参数
this._mxScaleWidth = this._mxScaleHeight = 0; //比例范围参数
this._fun = function(){}; //缩放执行程序
//获取边框宽度
var _style = CurrentStyle(this._obj);
this._borderX = (parseInt(_style.borderLeftWidth) || 0) + (parseInt(_style.borderRightWidth) || 0);
this._borderY = (parseInt(_style.borderTopWidth) || 0) + (parseInt(_style.borderBottomWidth) || 0);
//事件对象(用于绑定移除事件)
this._fR = BindAsEventListener(this, this.Resize);
this._fS = Bind(this, this.Stop);
this.SetOptions(options);
//范围限制
this.Max = !!this.options.Max;
this._mxContainer = $(this.options.mxContainer) || null;
this.mxLeft = Math.round(this.options.mxLeft);
this.mxRight = Math.round(this.options.mxRight);
this.mxTop = Math.round(this.options.mxTop);
this.mxBottom = Math.round(this.options.mxBottom);
//宽高限制
this.Min = !!this.options.Min;
this.minWidth = Math.round(this.options.minWidth);
this.minHeight = Math.round(this.options.minHeight);
//按比例缩放
this.Scale = !!this.options.Scale;
this.Ratio = Math.max(this.options.Ratio, 0);
this.onResize = this.options.onResize;
this._obj.style.position = "absolute";
!this._mxContainer || CurrentStyle(this._mxContainer).position == "relative" || (this._mxContainer.style.position = "relative");
},
//设置默认属性
SetOptions: function(options) {
this.options = { //默认值
Max: false, //是否设置范围限制(为true时下面mx参数有用)
mxContainer:"", //指定限制在容器内
mxLeft: 0, //左边限制
mxRight: 9999, //右边限制
mxTop: 0, //上边限制
mxBottom: 9999, //下边限制
Min: false, //是否最小宽高限制(为true时下面min参数有用)
minWidth: 50, //最小宽度
minHeight: 50, //最小高度
Scale: false, //是否按比例缩放
Ratio: 0, //缩放比例(宽/高)
onResize: function(){} //缩放时执行
};
Extend(this.options, options || {});
},
//设置触发对象
Set: function(resize, side) {
var resize = $(resize), fun;
if(!resize) return;
//根据方向设置
switch (side.toLowerCase()) {
case "up" :
fun = this.Up;
break;
case "down" :
fun = this.Down;
break;
case "left" :
fun = this.Left;
break;
case "right" :
fun = this.Right;
break;
case "left-up" :
fun = this.LeftUp;
break;
case "right-up" :
fun = this.RightUp;
break;
case "left-down" :
fun = this.LeftDown;
break;
case "right-down" :
default :
fun = this.RightDown;
};
//设置触发对象
addEventHandler(resize, "mousedown", BindAsEventListener(this, this.Start, fun)); },
//准备缩放
Start: function(e, fun, touch) {
//防止冒泡(跟拖放配合时设置)
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true);
//设置执行程序
this._fun = fun;
//样式参数值
this._styleWidth = this._obj.clientWidth;
this._styleHeight = this._obj.clientHeight;
this._styleLeft = this._obj.offsetLeft;
this._styleTop = this._obj.offsetTop;
//四条边定位坐标
this._sideLeft = e.clientX - this._styleWidth;
this._sideRight = e.clientX + this._styleWidth;
this._sideUp = e.clientY - this._styleHeight;
this._sideDown = e.clientY + this._styleHeight;
//top和left定位参数
this._fixLeft = this._styleLeft + this._styleWidth;
this._fixTop = this._styleTop + this._styleHeight;
//缩放比例
if(this.Scale){
//设置比例
this.Ratio = Math.max(this.Ratio, 0) || this._styleWidth / this._styleHeight; //left和top的定位坐标
this._scaleLeft = this._styleLeft + this._styleWidth / 2;
this._scaleTop = this._styleTop + this._styleHeight / 2;
};
//范围限制
if(this.Max){
//设置范围参数
var mxLeft = this.mxLeft, mxRight = this.mxRight, mxTop = this.mxTop, mxBottom = this.mxBottom;
//如果设置了容器,再修正范围参数
if(!!this._mxContainer){
mxLeft = Math.max(mxLeft, 0);
mxTop = Math.max(mxTop, 0);
mxRight = Math.min(mxRight, this._mxContainer.clientWidth);
mxBottom = Math.min(mxBottom, this._mxContainer.clientHeight);
};
//根据最小值再修正
mxRight = Math.max(mxRight, mxLeft + (this.Min ? this.minWidth : 0) + this._borderX);
mxBottom = Math.max(mxBottom, mxTop + (this.Min ? this.minHeight : 0) + this._borderY);
//由于转向时要重新设置所以写成function形式
this._mxSet = function(){
this._mxRightWidth = mxRight - this._styleLeft - this._borderX;
this._mxDownHeight = mxBottom - this._styleTop - this._borderY;
this._mxUpHeight = Math.max(this._fixTop - mxTop, this.Min ? this.minHeight : 0); this._mxLeftWidth = Math.max(this._fixLeft - mxLeft, this.Min ? this.minWidth : 0);
};
this._mxSet();
//有缩放比例下的范围限制
if(this.Scale){
this._mxScaleWidth = Math.min(this._scaleLeft - mxLeft, mxRight - this._scaleLeft - this._borderX) * 2;
this._mxScaleHeight = Math.min(this._scaleTop - mxTop, mxBottom - this._scaleTop - this._borderY) * 2;
};
};
//mousemove时缩放 mouseup时停止
addEventHandler(document, "mousemove", this._fR);
addEventHandler(document, "mouseup", this._fS);
if(isIE){
addEventHandler(this._obj, "losecapture", this._fS);
this._obj.setCapture();
}else{
addEventHandler(window, "blur", this._fS);
e.preventDefault();
};
},
//缩放
Resize: function(e) {
//清除选择
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
//执行缩放程序
this._fun(e);
//设置样式,变量必须大于等于0否则ie出错
with(this._obj.style){
width = this._styleWidth + "px"; height = this._styleHeight + "px";
top = this._styleTop + "px"; left = this._styleLeft + "px";
}
//附加程序
this.onResize();
},
//缩放程序
//上
Up: function(e) {
this.RepairY(this._sideDown - e.clientY, this._mxUpHeight);
this.RepairTop();
this.TurnDown(this.Down);
},
//下
Down: function(e) {
this.RepairY(e.clientY - this._sideUp, this._mxDownHeight);
this.TurnUp(this.Up);
},
//右
Right: function(e) {
this.RepairX(e.clientX - this._sideLeft, this._mxRightWidth);
this.TurnLeft(this.Left);
},
//左
Left: function(e) {
this.RepairX(this._sideRight - e.clientX, this._mxLeftWidth);
this.RepairLeft();
this.TurnRight(this.Right);
},
//右下
RightDown: function(e) {
this.RepairAngle(
e.clientX - this._sideLeft, this._mxRightWidth,
e.clientY - this._sideUp, this._mxDownHeight
);
this.TurnLeft(this.LeftDown) || this.Scale || this.TurnUp(this.RightUp);
},
//右上
RightUp: function(e) {
this.RepairAngle(
e.clientX - this._sideLeft, this._mxRightWidth,
this._sideDown - e.clientY, this._mxUpHeight
);
this.RepairTop();
this.TurnLeft(this.LeftUp) || this.Scale || this.TurnDown(this.RightDown); },
//左下
LeftDown: function(e) {
this.RepairAngle(
this._sideRight - e.clientX, this._mxLeftWidth,
e.clientY - this._sideUp, this._mxDownHeight
);
this.RepairLeft();
this.TurnRight(this.RightDown) || this.Scale || this.TurnUp(this.LeftUp); },
//左上
LeftUp: function(e) {
this.RepairAngle(
this._sideRight - e.clientX, this._mxLeftWidth,
this._sideDown - e.clientY, this._mxUpHeight
);
this.RepairTop(); this.RepairLeft();
this.TurnRight(this.RightUp) || this.Scale || this.TurnDown(this.LeftDown); },
//修正程序
//水平方向
RepairX: function(iWidth, mxWidth) {
iWidth = this.RepairWidth(iWidth, mxWidth);
if(this.Scale){
var iHeight = this.RepairScaleHeight(iWidth);
if(this.Max && iHeight > this._mxScaleHeight){
iHeight = this._mxScaleHeight;
iWidth = this.RepairScaleWidth(iHeight);
}else if(this.Min && iHeight < this.minHeight){
var tWidth = this.RepairScaleWidth(this.minHeight);
if(tWidth < mxWidth){ iHeight = this.minHeight; iWidth = tWidth; } }
this._styleHeight = iHeight;
this._styleTop = this._scaleTop - iHeight / 2;
}
this._styleWidth = iWidth;
},
//垂直方向
RepairY: function(iHeight, mxHeight) {
iHeight = this.RepairHeight(iHeight, mxHeight);
if(this.Scale){
var iWidth = this.RepairScaleWidth(iHeight);
if(this.Max && iWidth > this._mxScaleWidth){
iWidth = this._mxScaleWidth;
iHeight = this.RepairScaleHeight(iWidth);
}else if(this.Min && iWidth < this.minWidth){
var tHeight = this.RepairScaleHeight(this.minWidth);
if(tHeight < mxHeight){ iWidth = this.minWidth; iHeight = tHeight; } }
this._styleWidth = iWidth;
this._styleLeft = this._scaleLeft - iWidth / 2;
}
this._styleHeight = iHeight;
},
//对角方向
RepairAngle: function(iWidth, mxWidth, iHeight, mxHeight) {
iWidth = this.RepairWidth(iWidth, mxWidth);
if(this.Scale){
iHeight = this.RepairScaleHeight(iWidth);
if(this.Max && iHeight > mxHeight){
iHeight = mxHeight;
iWidth = this.RepairScaleWidth(iHeight);
}else if(this.Min && iHeight < this.minHeight){
var tWidth = this.RepairScaleWidth(this.minHeight);
if(tWidth < mxWidth){ iHeight = this.minHeight; iWidth = tWidth; } }
}else{
iHeight = this.RepairHeight(iHeight, mxHeight);
}
this._styleWidth = iWidth;
this._styleHeight = iHeight;
},
//top
RepairTop: function() {
this._styleTop = this._fixTop - this._styleHeight;
},
//left
RepairLeft: function() {
this._styleLeft = this._fixLeft - this._styleWidth;
},
//height
RepairHeight: function(iHeight, mxHeight) {
iHeight = Math.min(this.Max ? mxHeight : iHeight, iHeight);
iHeight = Math.max(this.Min ? this.minHeight : iHeight, iHeight, 0);
return iHeight;
},
//width
RepairWidth: function(iWidth, mxWidth) {
iWidth = Math.min(this.Max ? mxWidth : iWidth, iWidth);
iWidth = Math.max(this.Min ? this.minWidth : iWidth, iWidth, 0);
return iWidth;
},
//比例高度
RepairScaleHeight: function(iWidth) {
return Math.max(Math.round((iWidth + this._borderX) / this.Ratio - this._borderY), 0);
},
//比例宽度
RepairScaleWidth: function(iHeight) {
return Math.max(Math.round((iHeight + this._borderY) * this.Ratio - this._borderX), 0);
},
//转向程序
//转右
TurnRight: function(fun) {
if(!(this.Min || this._styleWidth)){
this._fun = fun;
this._sideLeft = this._sideRight;
this.Max && this._mxSet();
return true;
}
},
//转左
TurnLeft: function(fun) {
if(!(this.Min || this._styleWidth)){
this._fun = fun;
this._sideRight = this._sideLeft;
this._fixLeft = this._styleLeft;
this.Max && this._mxSet();
return true;
}
},
//转上
TurnUp: function(fun) {
if(!(this.Min || this._styleHeight)){
this._fun = fun;
this._sideDown = this._sideUp;
this._fixTop = this._styleTop;
this.Max && this._mxSet();
return true;
}
},
//转下
TurnDown: function(fun) {
if(!(this.Min || this._styleHeight)){
this._fun = fun;
this._sideUp = this._sideDown;
this.Max && this._mxSet();
return true;
}
},
//停止缩放
Stop: function() {
removeEventHandler(document, "mousemove", this._fR);
removeEventHandler(document, "mouseup", this._fS);
if(isIE){
removeEventHandler(this._obj, "losecapture", this._fS);
this._obj.releaseCapture();
}else{
removeEventHandler(window, "blur", this._fS);
}
}
};
然后写一个处理程序,用来画出截图:
ImageCropper.ashx
<%@ WebHandler Language="c#" Class="ImageCropper" Debug="true" %>
using System;
using System.Web;
using System.Drawing;
using System.IO;
public class ImageCropper : IHttpHandler
{
#region IHttpHandler 成员
public void ProcessRequest(HttpContext context)
{
string ImgPath = Convert.ToString(context.Request["p"]);
int PointX = Convert.ToInt32(context.Request["x"]);
int PointY = Convert.ToInt32(context.Request["y"]);
int CutWidth = Convert.ToInt32(context.Request["w"]);
int CutHeight = Convert.ToInt32(context.Request["h"]);
int PicWidth = Convert.ToInt32(context.Request["pw"]);
int PicHeight = Convert.ToInt32(context.Request["ph"]);
context.Response.ContentType = "image/jpeg";
ShowImage(HttpContext.Current.Server.MapPath(ImgPath), PointX, PointY, CutWidth, CutHeight, PicWidth, PicHeight).WriteTo(context.Response.OutputStream); }
private MemoryStream ShowImage(string path, int PointX, int PointY, int CutWidth, int CutHeight, int PicWidth, int PicHeight)
{
Image image = Image.FromFile(path);
Bitmap bm = new Bitmap(CutWidth, CutHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics graphics = Graphics.FromImage(bm);
graphics.DrawImage(image, new Rectangle(0, 0, CutWidth, CutHeight), PointX * image.Width / PicWidth, PointY * image.Height / PicHeight, CutWidth * image.Width / PicWidth, CutHeight * image.Height / PicHeight, GraphicsUnit.Pixel);
int a = https://www.wendangku.net/doc/9b12213629.html,stIndexOf('.');
int b = https://www.wendangku.net/doc/9b12213629.html,stIndexOf('\\');
string _newPic = path.Substring(0, b) + "\\new_" + DateTime.Now.ToFileTimeUtc().ToString("X") + ".jpg";
bm.Save(_newPic, System.Drawing.Imaging.ImageFormat.Jpeg);
MemoryStream ms = new MemoryStream();
bm.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
image.Dispose();
graphics.Dispose();
bm.Dispose();
return ms;
}
public bool IsReusable
{
get
{
return false;
}
}
#endregion
}
最后是页面代码:
ImageCropper.htm
#ViewDiv
{
width: 200px;
height: 200px;
}
#bgDiv
{
目录 一、编制依据 (2) 二、工程概况 (2) 三、营造做法 (2) 四、施工准备 (3) 五、工艺流程 (3) 六、节点做法 (4) 七、施工要求 (5) 八、质量控制 (6) 九、安全要求 (7) 十、附图4页
一、编制依据 《无锡太湖新城二期三标段项目施工图纸》 《江苏省建筑安装工程施工技术操作规程》DGJ32/J36-2006 《太湖新城图纸汇审及洽商记录》 二、工程概况 1、本项目建设地点:蠡湖大道东侧,金石路南侧总用地面积:24736平方米容 积率:2.50 2、本项目由38#楼,50#楼,58#楼三个单体构成,其中: 38#楼建筑占地面积:830.3平方米总建筑面积:22147.3平方米(含保温层)其中保温层:372.85平方米建筑层数地上:29层,地下2层 建筑高度:89.300米 50#楼建筑占地面积:410.9平方米总建筑面积:11466.28平方米(含保温层)其中保温层:191.71平方米建筑层数地上:31层,地下2层 建筑高度95.300米 58#楼建筑占地面积:1050平方米总建筑面积:29343.32平方米(含保温层)其中保温层:366.22平方米建筑层数地上:32层,地下2层 建筑高度97.300米 3、建筑防火类别:一类建筑物的耐火等级一级地上一级地下一级 本工程设置火灾自动报警系统部位:地下自行车库地下汽车库公共部位 本工程设置自动喷水灭火系统部位:地下自行车库地下汽车库 本工程设置其他灭火设备或系统及部位:地下自行车库地下汽车库公共部位 4、工程设计使用年限:50年 5、建筑物的抗震设防烈度:6度主要结构类型:剪力墙结构主要结构基础形 式:桩筏基础 三、营造做法 1、楼面C:厨房间楼面(防水等级II级) 捣制钢筋混凝土屋面板→25mm厚1:2.5水泥砂浆找平层,周边摸小八字→1.0mmJS防水涂料周围沿墙上翻300→20mm厚1:2.5水泥砂浆找平,压实抹光
收稿日期:2006209226;修返日期:2006211210 作者简介:任立学(19782),男,河北人,硕士研究生,主要研究方向为计算机网络安全;刘知贵(19662),男,四川人,教授,博士研究生,主要研究方向为自动控制理论、计算机网技术及安全策略(zhiguiliu@https://www.wendangku.net/doc/9b12213629.html, );赵强,男,四川人,主任,主要研究方向为计算计网络安全;彭桂力,男,河北人,硕士研究生,主要研究方向为模式识别与智能系统. 打印机监控系统的设计与实现 任立学1 ,刘知贵1 ,赵 强2 ,彭桂力 1 (1.西南科技大学,四川绵阳621010;2.西南计算中心,四川绵阳621010) 摘 要:针对如今企事业单位局域网内部打印机管理难的问题,提出了利用活动目录来实现打印机的管理。设计了基于活动目录的打印机监控系统。通过该系统,注册用户可以直接打印,无论是否成功均会以日志的形式被记录进数据库中。未注册用户无权打印文件。当系统检测到非法用户,将会自动删除打印任务,并记录打印日志。经过测试证明,该方案能实现对用户和打印任务进行有效的监控,为企业内部的打印机管理提供了方便、快捷的途径。 关键词:打印机监控;活动目录;系统设计 中图分类号:TP311.11 文献标志码:A 文章编号:100123695(2007)1220217203 Design and i m p lementati on of p rinter monit or system RE N L i 2xue 1 ,L I U Zhi 2gui 1 ,ZHAO Q iang 2 ,PE NG Gui 2li 1 (1.Southw est U niversity of Science &Technology,M ianyang S ichuan 621010,China;2.Southw est Co m putation Center ,M ianyang S ichuan 621010,China ) Abstract:A i m at the p r oblem that it is difficult t o manage the p rinter of fact ory,U sed active direct ory t o manage p rinters, and designed a p rinter monit or syste m based on active direct ory .By this system,the registered user could p rint docu ments,and the p r ocess could be record int o the database as a l og docu ment no matter the task be success or not .The unregistered user could not p rint docu ments .It would delete the p rint task and record the p rint l og when the syste m checked out an illegal user .This syste m accomp lishes an effective monit or t o the users and p rint tasks,affords a convenience and quick way t o the monit or of p rint in fact ory . Key words:p rinter monit or;active direct ory;syste m design 如今,打印机的管理还处于人工处理阶段,缺乏有效的管理手段和工具,多数公司和企事业单位在打印机管理上出现了一些困难和问题。这些问题是多方面的:a )对打印的人员没有进行认证和检验,对打印的内容没有什么限制,往往是任何人可以打印任何东西,不管是这些东西是不是机密文档,即使非内部人员打印了机密文档也无法追查,造成机密文档的泄密;b )不知道究竟是谁在打印,打印了些什么无法统计、核算打印成本处于混乱、无序之中,缺乏一个有效的管理;c )打印费用居高不下,打印机关键部件损耗快,更换费用高,员工存在普遍的随意打印现象,纸张浪费严重,经常是打印机边上一大堆无人认领的废纸。 针对这些问题,笔者设计了基于活动目录的打印机监控系统。本系统的主要任务是对企事业单位局域网内部的共享打印机进行管理。要实现的功能基本上分为几部分:首先,用户打印时需要注册,没有注册的用户无权进行打印,如果系统检测到是非法用户,将会自动删除打印任务,并记录打印日志;对合法用户,系统不作任何的提示,但不论是打印成功还是不成功均会以日志的形式被记录进数据库中。 系统提供对打印记录的远程查询,通过网络用户可以方便地对打印日志记录进行查询。管理员还可以远程地对打印用 户进行管理。对打印机的管理提供了极大的方便。 活动目录概述 活动目录服务接口(active direct ory services interfaces,AD 2 SI )所属类别为服务器,是一种目录服务抽象接口。与组件对 象模型(C OM )兼容的编程语言,如V isual Basic 、VBScri p t 、 JavaScri p t 、C 和C ++类似。可以使用该接口对基础目录服务进 行一般的目录调用。ADSI 是一类开放接口。这类接口从不同的网络提取目录服务的功能为网络资源的访问及管理提供一个单一的视图。不管是哪个网络环境包含这些资源,系统管理员和开发人员均可以利用ADSI 的功能来列举与管理一个目录服务中的资源。该目录既可以是基于LDAP 的目录,也可以是基于NDS 或基于NT DS 的目录。至于是哪种并无关系,只要服务提供者所提供的目录服务是有效的。它主要是解决四个方面的问题:a )使单个客户登录到多个目录成为可能;b )使只将应用程序写入一个AP I 就可在多个目录工作成为可能; c )使最终用户更容易查找到丰富的目录查询信息; d )使多目 录管理更容易。 活动目录允许组织机构按照层次式的、面向对象的方式存 第24卷第12期2007年12月 计算机应用研究 App licati on Research of Computers Vol .24No .12Dec .2007
一、编制依据 1. 施工现场条件和实地勘察资料; 2.《建筑防水工程手册》、《新型建筑材料实用手册》; 3.《北京市厕浴间防水工程推荐做法》(京2002TJ1); 4.《建筑构造通用图集》; 5.《建筑工程质量检验评定标准》(GBJ301-88); 6.《中华人民共和国国家标准》建筑防水材料。 二、工程概况 工程名称:卫生间防水工程 工程做法:采用JS复合防水涂料2.0mm厚涂膜做法 三、施工部署 本工程由我单位组织施工,根据工程实际要求合理安排施工人员,施工人员持证上岗。 根据施工现场的进度分段按期完成防水任务。施工流水根据现场施工情况确定。 该项目工程人员安排如下: 四、材料准备 1.主要材料选择 根据设计,本工程防水层采用JS复合防水涂料涂膜防水层2.0mm做法。 此材料由有机液料和无机粉料复合制成的双组份防水涂料,是一种既有有机材料弹性高又有无机材料耐久性等优点的新型防水材料,涂刷后可形成高强坚韧的防水涂膜。该材料具有坚韧高强,耐水性、耐久性优异,无毒、无味、无污染的环保型新型防水材料。尤其适用于厕所间、设备间、食用水池、游泳池、内外立壁、屋面的防水。 主要性能指标:
性能指标 抗拉强度>2.0MPa 断裂伸长率>250% 低温柔性-10~-30℃ 粘结强度>1.50MPa 不透水性0.3Mpa,30min不透水 2.设备机械配备 对该工程的施工计划投入以下机械设备及工具: 计划投入的主要施工机具(工具)设备表 五、施工工艺 1.施工流程 材料准备技术准备基层处理细部处理防水层施工质量检验成品保护 2.基层处理 1.找坡层 地面向地漏处排水坡度应为1~3%;地漏处排水坡度,以地漏边缘向外50mm内排水坡度为5%。向地漏处找坡层坡度2~3%,找坡层厚度大于30mm时用1:6水泥焦渣垫层;找坡层厚度小于30mm时用混合灰。 2.防水层基层(找平层) 厕浴间防水层基层可采用水泥砂浆找平,配合比为1:2.5或1:3,厚度为20mm。基层表面应坚实具有一定的强度,清洁干净,表面无浮土、砂粒等污物,表面应平整、光滑、无松动,要求抹平压光,对于残留的砂浆块或突起物应以铲刀削平。 3.阴阳角 地面四周与墙体连接处,应抹成半径为20mm的圆弧。 4.管根部位 穿墙管根定位后,楼板四周用1:3水泥防水砂浆堵严,缝大于20mm时,可用豆
中小学3D设计与打印课程方案 一、背景与意义 当今的教育思潮中,创新精神与实践能力的培养问题日渐突出。历史表明,经济强国的背后离不开教育的支持,所以我们应该着力研究成功背后的因素,美国教育是各国研究的长期目标.STEM教育在美国作为一 门新兴的课程,越来越受到政府的重视.而对中国而言,虽然STEM是相对新鲜的词汇,但是也得到大部分学者的认同.我们大兴区注重科技教育,新兴的教育方式及时与课程衔接。 作为一线教师,我们应积极培养学生的创新实践能力,使学生在中小学学习阶段打好坚实的基础。然而现今的创新教育培养,大多止步于思维的培养,由于受到时间、场所等限制,而忽视了最能体现学生“创新”素养的动手实践能力的培养,造成了“手脑失衡”的现状,对于科技发明、创造更是有畏难情绪。 3D设计与3D打印技术在近年来发展迅猛,国际上科学技术水平较为先进的国家如美国、英国、日本等,学生的技术课程中早已引入了“3D 设计与打印技术”,将学到的知识和已有的生活经验相综合应用的教学内容;而在我国还处于起步与探索阶段,包括北京、上海、重庆、杭州、南京、苏州,山东等城市的一批中小学也在这一两年做出了尝试。 目前在机械、医疗、建筑、艺术、考古、军事等领域得到了广泛应用,引发了全球又一次技术新浪潮。引入3D设计和3D打印机等设备,组建3D打印工作室,能使学生更多的接触、感知和体验未来新兴技术,拓宽学生视野,培养学生的创新意识和创新精神,不断提升技术素养,
促进学生全面而富有个性的发展。 3D创意设计实验室培养的核心素养与能力 批判性思维能力;创造性解决问题的能力; 跨学科的学习能力;与人合作的能力; 有效运用多种手段创造性表达和有效沟通的能力;领导力 3D创意设计实验室探索的主要学习方式 探究式学习;基于项目的学习; 基于游戏的学习;基于设计的学习 3D创意设计实验室学习区域中配备的主要设备和资源 核心必备:3D设计软件;3D打印机 选择配置:激光内雕机;立体雕刻机;激光雕刻机 3D创意设计实验室学习空间设计开放、组合、灵活、丰富资源支持其他: 边柜;电脑工作台; 加工台;组合式桌椅; 移动式工具柜;触控液晶显示器; 学生作品展示空间
JS聚合物复合防水涂料 施工方案 、防水做法与材料 厨房、卫生间防水层采用1.5mm厚JS聚合物复合防水涂料 、厨房、卫生间防水构造设计 三、施工条件及要求 (1)防水层施工前,所有管件、卫生设备、地漏等必须安装牢固,接缝严密。 (2 )地面坡度一般为2% (设计有特殊要求者除外),向地漏处排水。在地漏周围半 径50mm范围内,其排水坡度应增大至5%且地漏处标高应比地面低20mm. (3)水泥砂浆找平层应作到平整坚实、无麻面、无起砂、无松动及凹凸不平现象。 (4)阴阳角、管道根部应抹成半径为100-150mm的园弧。 (5 )基层应平整干净、干燥、含水率不大于9% (6)涂膜防水层施工时,环境温度应在 5 C以上。 四、JS聚合物复合防水涂料的施工工艺及操作要点 1、施工工艺 涂 2、施工操作要点 2.1、基面处理:基面必须平整、牢固、干净、无明水、无渗漏、凹凸不平及裂缝处找平,渗漏必须进行堵漏处理阴阳角应做成圆弧角。 2.2、JS防水涂料(I型)配料 如果需要加水,在液料中加水后,用搅拌器边搅拌边徐徐加入粉料,之后充分搅拌均匀直至料中不含团粉(搅拌时间3min左右,最好不用手工搅拌) 打底层涂料的重量配比为:液料:粉料:水=10: 7: 14下层中层和上层涂料的重量配比为10:7:0?2;在规定的加水范围内,涂面、顶面或立面应不加或少加些水平面应多加些水。2.3、涂覆 用滚刷或毛刷涂覆,根据选定的方法,按照打底层T下层一上层的次序逐
层完成。各层之间的时间间隔以前一层涂膜干固不粘为主为准。现场温度低、湿度大、通风差,干固时间长些;反之短些。涂覆时应注意以下事项: ①若涂料(尤其是打底料)有沉淀应随时搅拌均匀。 ③涂料要尽量均匀,不能有局部沉淀,并要求多滚刷几次,使涂料与基层之间不留气泡,粘结严密; ③每层涂覆必须按规定用量取料,不能过厚或过薄,若最后防水层厚度不够,可加涂一层或数层。 涂刷遍数:一般为 3 遍 用料量:3.2 kg /卅左右 涂膜厚度:1.5伽左右 2.4 、质量要求与工程检验防水层施工后应认真检查整个工程的各项部分,特别是薄弱环节,发现问题,及时修复。涂料不应裂纹、翘边、鼓泡、分层等现象。 涂层平均厚度不得低于设计厚度,测点中的70%应大于或等于设计厚度,允许有30%的测点厚度不低于设计厚度的80%。 蓄水试验须等涂层完全干固后方可进行,一般情况下需48h 以上,在特别潮湿又不通风的环境中需更长时间。防水作完后,蓄水24h 不渗漏为合格。屋面防水做完后,应检查排水系统是否畅通,有无渗漏。 五、难点、重点处理方案 在本工程中,难点、重点的构造直接关系着防水系统的可靠性,根据我公司的经验,总结分析本工程的难点处理方案如下 5.1 穿墙管防水处理 穿墙管定位后,楼板四周用防水水泥砂浆或豆石混凝土堵严。热水管、暖气管等需加套管。套管防水层收头处四周应用建筑密封膏封严。管道四周剔出凹槽,其尺寸为15mmx15mm, 将管根周围及凹槽内清理干净。将密封膏挤压在凹槽内,并用腻子刀挤压密实,使之饱满、密实、无气孔。将管道外壁200mn范围内,清除灰浆和油污杂质。涂刮防水涂料。 5.2 地漏处防水处理 定位后,楼板四周用防水水泥砂浆或豆石混凝土堵严。四周剔出凹槽,其尺寸为 10mmx15m将管根周围及凹槽内清理干净。将密封膏挤压在凹槽内,并用腻子刀挤压密实,使之饱满、密实、无气孔,上面做涂层防水层。 5.3 阴阳角处防水处理 做成小圆角,做300mm宽的防水增强层。
3D打印机设计参考论文 导读:3D打印机设计参考论文,2015-02-063D打印机DIY,1.1国内外3D打印机的研究现状,1.1.1国外3D打印机的研究现状,1.1.2国内3D打印机的研究现状,1.2 3D打印机的发展趋势,1.2.1 3D打印产业的未来发展前景,1.2.2 3D打印技术未来发展的主要趋势,1.3 3D打印机的工作原理及特点,2总体方案及结构设计,2.2总体框架的设计,2.3温度控制回路的设计,2.4 XYZ三方 3D打印机设计参考论文 2015-02-06 3D打印机DIY 3D打印机设计参考论文 1.1国内外3D打印机的研究现状 1.1.1国外3D打印机的研究现状 1.1.2国内3D打印机的研究现状 1.2 3D打印机的发展趋势 1.2.1 3D打印产业的未来发展前景 1.2.2 3D打印技术未来发展的主要趋势 1.3 3D打印机的工作原理及特点 1.4发展创新与突破 2 总体方案及结构设计 2.1引言 2.2总体框架的设计 2.3温度控制回路的设计 2.4 XYZ三方向控制电机的设计 2.5喷头移动及喷出量调节的设计 3 机械结构 3.1传动方式的选择 3.2转动惯量的计算 3.3喷头的选择 4 电机的选择 4.1伺服电机和步进电机的对比 4.2直流交流伺服电机对比 4.3负载转矩的计算
4.4打印速度的初步估计 5 传感器 5.1温度传感器对比 5.2机械位置传感器 5.3压力传感器 6 3D打印机的优点及面临问题 6.1 3D打印机的优点 6.2 3D打印技术面临的问T 3D打印机设计参考论文 【摘要】3D打印是最近两年开始流行的一种快速成形技术, 它以数字模型文件为 基础, 通过逐层打印的方式来构造物体. 我们日常生活中的打印机能打印一些平面纸张材料, 而3D打印机打印出的是立体塑品产品.文章对3D打印的技术体系和国内外产业发展现状、发展态势作了综合介绍,综述3D打印技术的基本概念、发展简史、打印过程原理、应用领域、广泛影响以及面临的问题等.在介绍3D技术的发展历程、3D打印技术的工作原理 流程及特点的基础上,分析了3D打印技术的创新点和存在的问题,展望了3D打印技术的未来发展趋势. 关键词:3D打印机;快速成型;结构设计;社会制 【Abstract】:3D printing is one of the last two years became popular rapid prototyping technology,which is based digital model files, through over the printed layer by layer approach to construct objects. Our daily lives printer can print some flat sheet material, and 3D printer to print out the three-dimensional plastic goods products. Article on 3D printing technology system status and domestic industrial development, development made a comprehensive presentation situation, review the basic concepts of 3D printing technology, development history, the printing process principles, applications, and the problems faced widespread impact, etc. In the development process of introduction of 3D technology, working principle and characteristics of the process of 3D printing technology based on the analysis of 3D printing technology innovations and problems, looked to the future development trend of 3D printing technology. Key words:3D printers; rapid prototyping; structural design; social manufacture 引言
德沁苑工程厨房、卫生间及外墙 JS防水施工方案 一、工程概况: 粤长辉龙岗德沁苑商住楼工程地处深圳市龙岗区龙溪,邻近龙岗府路,对面是深圳市龙岗区龙岗街道办事处龙岗会堂,属新建住宅小区。现场东、南二侧紧邻市政道路,西、北二侧为已成型的建筑。交通较为便利。 本工程规划建筑由5栋11层和1栋12层的高层商业住宅楼和一层地下室组成,总用地面积8580.16平方米,设计总建筑面积28579.76平方米,其中地上部分建筑面积22317.44平方米,地下室建筑面积6262.32平方米。建筑总高度45.2米。本工程建筑类别属商住楼,其中地下室平时为车库,战时为防空单元,首层为商铺,二层以上为住宅楼。 本工程地上部分分为三个区域共6栋相对独立的建筑,由南向北依次为,一区:德意阁和德兴阁;二区:德倩阁;三区:德翠阁、德润阁、德贤阁。首层为架空层,层高6m,建筑用途为商铺和喷泉广场,建筑面积3090.25 m2,。二层及以上为住宅,层高3m。建筑高度为:一区是40.5m;二区41.3m;三区是39m。 二、施工要求及做法: 建筑工程防水施工非常重要,其施工质量好坏将直接影响到建筑物的使用功能,甚至结构安全。在工程施工中,我们将从防水原材料的质量控制、专业施工队伍的选择、施工过程控制、节 1.5厚JS水泥基防水涂膜一道1.5米高 内墙面抹灰找平层(地面20厚1:2水泥砂浆找平层) 15厚1:2.5水泥砂浆找平层 钢筋混凝土楼板 50x50面砖 1.5厚JS水泥基防水涂膜一道 墙面15厚1:2.5水泥砂浆找平层 钢筋混凝土剪力墙(加气混凝土砌筑墙) 防水工程除满足设计要求外,还要满足有关规范要求,主要有国家规范广东省标准《建筑防水工程技术规程》(DBJ15-19-97)等。 三、防水工程施工管理措施 1、项目经理部指派技术部有多年防水工程施工经验的工程师主管本工程的防水施工,该工程师熟悉防水工程的施工工艺、防水施工要点,有能力管理好本工程的防水施工。 2、选择有相应施工资质的专业队伍,并报监理、业主审批。检查施工队伍中操作工人的上岗证、技术技能等级证书等; 3、防水原材料进场必须具备深圳市的准用证、出厂质量合格证、材料检验报告。进场前不得开封,进场后开封检查,外观质量也要满足要求。否则不准进场,立即退货。 4、防水工程施工中,过程检查尤为重要。主管工程师要对防水施工全过程进行检查,包括基层清理、基层处理剂涂刷、防水层施工工序、闭水试验、防水工程隐蔽验收等,施工质量验收必
3D设计与打印课程 方案
中小学3D设计与打印课程方案 一、背景与意义 当今的教育思潮中,创新精神与实践能力的培养问题日渐突出。历史表明,经济强国的背后离不开教育的支持,因此我们应该着力研究成功背后的因素,美国教育是各国研究的长期目标.STEM教育在美国作为一门新兴的课程,越来越受到政府的重视.而对中国而言,虽然STEM是相对新鲜的词汇,可是也得到大部分学者的认同.我们大兴区注重科技教育,新兴的教育方式及时与课程衔接。 作为一线教师,我们应积极培养学生的创新实践能力,使学生在中小学学习阶段打好坚实的基础。然而现今的创新教育培养,大多止步于思维的培养,由于受到时间、场所等限制,而忽视了最能体现学生“创新”素养的动手实践能力的培养,造成了“手脑失衡”的现状,对于科技创造、创造更是有畏难情绪。 3D设计与3D打印技术在近年来发展迅猛,国际上科学技术水平较为先进的国家如美国、英国、日本等,学生的技术课程中早已引入了“3D设计与打印技术”,将学到的知识和已有的生活经验相综合应用的教学内容;而在中国还处于起步与探索阶段,包括北京、上海、重庆、杭州、南京、苏州,山东等城市的一批中小学也在这一两年做出了尝试。 当前在机械、医疗、建筑、艺术、考古、军事等领域得到了广泛应用,引发了全球又一次技术新浪潮。引入3D设计和3D打印机等设备,组建3D打印工作室,能使学生更多的接触、感知和体验未
来新兴技术,拓宽学生视野,培养学生的创新意识和创新精神,不断提升技术素养,促进学生全面而富有个性的发展。 3D创意设计实验室培养的核心素养与能力 批判性思维能力;创造性解决问题的能力; 跨学科的学习能力;与人合作的能力; 有效运用多种手段创造性表示和有效沟通的能力;领导力 3D创意设计实验室探索的主要学习方式 探究式学习;基于项目的学习; 基于游戏的学习;基于设计的学习 3D创意设计实验室学习区域中配备的主要设备和资源 核心必备:3D设计软件;3D打印机 选择配置:激光内雕机;立体雕刻机;激光雕刻机 3D创意设计实验室学习空间设计开放、组合、灵活、丰富资源支持其它: 边柜;电脑工作台; 加工台;组合式桌椅; 移动式工具柜;触控液晶显示器; 学生作品展示空间
一、采用标准及依据 1、《聚合物水泥防水涂料》JC/T894-2001 2、《建筑防水涂料试验方法》GB/T16777-1997 3、国家现行防水规范、规程、图集 4、施工图纸要求 二、卫生间防水做法 1、基层刷1:0.4素水泥浆一道(内掺建筑胶)。 2、然后摸20厚1:3水泥砂浆找平层、 3、1.5厚的水泥基(JS-11)防水涂料 4、20厚1:2.5水泥砂浆保护层面层 三、材料准备 1、材料 本项目采用1.5mm厚JS-11聚合物水泥防水涂料,涂刷法施工。JS防水涂料是一种由高分子乳液与无机粉料组成的双组分防水涂料,对进入现场的JS防水涂料应按标准取样法抽样复验,合格后才能使用。 2、JS防水涂料主要特点 (1)具有较高的抗拉强度和延伸率及明显的柔性。 (2)具有较高含量的无机物水泥基材料,涂料有较高的耐久性、耐候性。 (3)施工方便、安全、工期短 3、主要工具 (1)清理基层工具:锤子、凿子、钢丝刷、扫帚、抹布等 (2)配料工具:台秤、水桶、称料桶、搅拌器、剪子等 (3)涂膜涂料工具:滚子、刮板、刷子等 4、作业条件 (1)人工准备 为确保防水层质量,卫生间必须由防水专业队伍进行施工,凡从事防水工程的施工人员必须经统一培训考核,并取得上岗证书才能操作。 (2)施工环境 施工环境温度应在5-35℃,五级以上大风天气不宜施工。 四、施工难点及细部工程做法 1、防水中的特点 (1)面积大,阴阳角多,施工难度大; (2)用蓄水量大,用水频繁集中; (3)工种复杂,交叉施工,相互干扰;
(4)主要渗漏部位在地面、墙面、穿墙地面管根、缝、立墙与地面相交部位、墙面相交部位、管道渗漏及顶板渗漏。 2、卫生间立墙面涂料应刷至离地1.8m高处。 3、根据有关防水规程的有关规定要求,结合厕浴在防水工程中的固有特点,制定了以“防排结合,综合治理”为防水设计原则的防水工程施工方案。 具体做法如下: (1)管根细部防水做法 在管根与混凝土之间预留凹槽,深10mm,宽10mm,凹槽内应嵌填密封膏,然后再由防水施工方施工涂料。如果在防水施工前未做凹槽嵌缝处理,则应凿缝嵌止水条并用防水堵漏宝封堵后再涂刷JS-11涂料。 (2)地漏细部防水做法 先凿缝嵌止水条,用防水堵漏宝进行封堵,然后后再涂刷JS-11涂料。 五、施工操作要点和技术要求 1、卫生间做法 (1)工艺流程 基层处理→涂刷JS防水涂料底层→细部附加层增强处理→涂刷JS防水涂料→涂刷中层防水涂料→涂刷面层防水涂料→保护层施工 (2)基层清理 选用合适的工具将基层清扫干净,不得有浮沉、杂物,不得有水。 (3)滚刷底涂 底涂饰为了提高涂膜与基层的粘接力,而当基层潮湿或在不吸水的干净的基层上使用时,可不做底涂(具体应视现场情况而定),底涂用量一般为0.3kg/m2。 (4)细部附加处理 在地漏、管根、阴阳角等易发生漏水的部位应增加一层加筋布加强处理。首先用橡胶刮或油漆刷厚度均匀地刷一遍JS涂料,宽度300mm为宜,并立即粘贴加筋进行加筋增强处理。加筋布粘贴时,应用油漆刷摊平压平整,与下层涂料贴合紧密,搭接宽度100mm,表面再涂刷一至二层涂料,使其达到设计要求厚度。 (5)涂刷一道涂层 细部节点处理完毕且涂膜干燥后,进行第二道大面涂层的施工。涂刷时要均匀,不能有局部沉积,并要多次涂刮使涂料与基层之间不留气泡。 (6)涂刷第二道涂层 在第一道涂层干燥后进行第二道涂层的施工,涂刷的方向应与第一道相互垂直,干燥后再涂刷下一道涂层。直到达到设计厚度。 (7)面层涂膜施工
3D设计与打印课程方案 一、背景与意义 当今的教育思潮中,创新精神与实践能力的培养问题日渐突出。历史表明,经济强国的背后离不开教育的支持,所以我们应该着力研究成功背后的因素,美国教育是各国研究的长期目标.STEM教育在美国作为一门新兴的课程,越来越受到政府的重视.而对中国而言,虽然STEM是相对新鲜的词汇,但是也得到大部分学者的认同.我们大兴区注重科技教育,新兴的教育方式及时与课程衔接。 作为一线教师,我们应积极培养学生的创新实践能力,使学生在中小学学习阶段打好坚实的基础。然而现今的创新教育培养,大多止步于思维的培养,由于受到时间、场所等限制,而忽视了最能体现学生“创新”素养的动手实践能力的培养,造成了“手脑失衡”的现状,对于科技发明、创造更是有畏难情绪。 3D设计与3D打印技术在近年来发展迅猛,国际上科学技术水平较为先进的国家如美国、英国、日本等,学生的技术课程中早已引入了“3D 设计与打印技术”,将学到的知识和已有的生活经验相综合应用的教学内容;而在我国还处于起步与探索阶段,包括北京、上海、重庆、杭州、南京、苏州,山东等城市的一批中小学也在这一两年做出了尝试。 目前在机械、医疗、建筑、艺术、考古、军事等领域得到了广泛应用,引发了全球又一次技术新浪潮。引入3D设计和3D打印机等设备,
组建3D打印工作室,能使学生更多的接触、感知和体验未来新兴技术,拓宽学生视野,培养学生的创新意识和创新精神,不断提升技术素养,促进学生全面而富有个性的发展。 3D创意设计实验室培养的核心素养与能力 批判性思维能力;创造性解决问题的能力; 跨学科的学习能力;与人合作的能力; 有效运用多种手段创造性表达和有效沟通的能力;领导力 3D创意设计实验室探索的主要学习方式 探究式学习;基于项目的学习; 基于游戏的学习;基于设计的学习 3D创意设计实验室学习区域中配备的主要设备和资源 核心必备:3D设计软件;3D打印机 选择配置:激光内雕机;立体雕刻机;激光雕刻机 3D创意设计实验室学习空间设计开放、组合、灵活、丰富资源支持 其他: 边柜;电脑工作台; 加工台;组合式桌椅;
卫生间JS防水施工方案
厨卫间JS丙烯酸防水涂料施工方案 1.工程概况(根据具体情况来描述): 2.厕浴、厨房间、公共卫生间在防水工程中的特点: ⑴面积小,阴阳角多,施工难度大; ⑵穿墙、地面管道多; ⑶用水量大,用水频繁集中; ⑷工种复杂,交叉施工,互相干扰; ⑸主要渗漏部位在地面、墙面、穿墙地面管根、缝、立墙与地面相交部位、墙面相交部位、卫生洁具与地面相交部位、管道渗漏及顶板渗漏。 3.防渗漏作法 地面标高低于同层楼层地板20mm,找平层抹平压光,排水坡度为2%,地漏处坡度为5%。穿墙地面管外设套管。高出地面20mm,管根及缝隙用JS密封材料密封;阴阳角部位用水泥砂浆做成平滑的圆角。 4.材料特点 ⑴JS丙烯酸防水涂料是一种由丙烯酸乳液、乙烯-乙酸乙烯共聚乳液和各种掺加剂组成的有机液料和由高铝高镁水泥、石英粉及各种添加料组成的无机粉料复合而成的双组分新型环保防水涂料。液料和粉料按一定比例配合做防水层,涂覆在厕浴、厨房间和公共卫生间基层表面,经过化学反应和水分蒸发固化后形成高强高弹具有良好的防水效果的涂膜。 ⑵JS丙烯酸防水涂料技术性能优良,各项技术指标均符合防水工程技术要求,具有良好的耐热耐寒和抗老化性能,与混凝土等多种材料有很好的黏结力,使用寿命高过过20年以上。 4.施工工艺流程
基层及节点处理→JS丙烯酸防水涂料柔性防水层→保护结合层→面层。 5.施工准备与步骤 ⑴工具准备:基层清理工具如,锤子、凿子、钢丝刷、喷水枪、扫帚、抹布等。取料配料工具如,台秤、水桶、秤料桶、配料桶、电动搅拌器、剪刀等。涂料涂布工具如,滚筒刷、刮板、刷子等。 ⑵材料准备:防水材料须具备质量保证书、合格证。进场材料应按规定取样方法取样检验,检验合格方可进场。使用防水材料的包装、贮存、保管应符合规定要求。 ⑶施工现场环境:气温应在零度以上,通风条件良好,基层无明显积水,且照明光线充足。 ⑷施工组织及安全措施: ①由经过统一培训考核并取得防水施工员合格证书的人员组成 的防水专业施工队伍进行施工。全面实行TOC小组管理。施工时由我方总工程师负责管理,确保工程质量。 ②施工前进行安全教育,技术措施交底,进场施工人员必须带安全帽,施工用电源必须配置漏电开关,施工人员施工时必须严格遵守国家或行业的标准规范。 ⑸基层处理及施工步骤: ①找平找坡层:20mm厚1:2.5水泥砂浆抹平、压光,向地漏处找2%排水坡度,地漏处排水坡度为5%。 ②穿墙地面管道外设套管,高出地面20mm,管道或套管周围缝隙及其根部用JS密封材料填实抹平。 ③阴阳角部位用水泥砂浆做成平滑圆弧角。 ④所有管件、地漏、排水口等部位必须就位正确,安装牢 固。
北京科技大学天津学院 本科生毕业设计(论文)选题报告题目:金属液滴成型与铣销复合3D 打印机床身结构设计 系:机械工程系 班级:机械1203班 姓名:魏浩然 学号:12413336 指导教师1:黄明吉 指导教师2: 20 年月日
目录 1文献综述 (3) 1.1本课题国外研究进展 (3) 1.2本课题国内研究进展 (3) 2课题背景及开展研究的意义 (4) 2.1课题背景 (4) 2.2开展研究的意义 (4) 3研究内容、方法及预期目的 (5) 3.1研究内容 (5) 3.2研究方法 (5) 3.3预期目的 (6) 4 进度安排 (8) 参考文献 (9) 指导教师意见 (10)
1文献综述 1.1本课题国外研究进展 日前,欧洲空间局(ESA)的“以实现高技术金属产品的高效生产与零浪费为目标的增材制造项目”(AMAZE)提出,将首次实现3D打印金属件的大规模生产。这些3D 打印的金属零部件可用于喷气式飞机、航天器以及核聚变等项目。 波音公司已经利用三维打印技术制造了大约300种不同的飞机零部件,包括将冷空气导入电子设备的形状复杂导管。波音公司和霍尼韦尔正在研究利用3D打印技术打印出机翼等更大型的产品。空客在A380客舱里使用3D打印的行李架,在“台风”战斗机中也使用了3D打印的空调系统。空客公司最近提出?“透明飞机概念”计划,制定了一张“路线图”,从打印飞机的小部件开始,一步一步发展,最终在2050年左右用3D打印机打印出整架飞机。“概念飞机”本身有许多令人眼花缭乱的复杂系统,比如仿生的弯曲机身,能让乘客看到周围蓝天白云的透明机壳等,采用传统制造手段难以实现,3D 打印或许是一条捷径。 1.2本课题国内研究进展 中国航天科技集团公司六院7103厂自行研制的某型号软管顺利通过2万次疲劳试验考核,各项指标均达到设计要求。这意味着长期困扰一线职工的软管工艺攻关项目获得成功。这是该厂继去年年底突破大直径高温合金筒体缝焊技术之后,再次突破小直径大壁厚异件缝焊工艺,进一步提升了发动机制造工艺能力。 北京航空航天大学同我国主要飞机设计研究所等单位通过“产学研”紧密合作,瞄准大型飞机、航空发动机等国家重大战略需求,历经17年研究在国际上首次全面突破了钛合金、超高强度钢等难加工大型复杂整体关键构件激光成形工艺、成套装备和应用关键技术,并已在飞机大型构件生产中研发出五代、10余型装备系统,已经受近十年的工程实际应用考验,使我国成为迄今为止唯一掌握大型整体钛合金关键构件激光成形技术并成功实现装机工程应用的国家。
基于CS模式下云打印系统的设计与实 现 版权声明 任何收存和保管本论文各种版本的单位和个人,未经本论文作者同意,不得将本论文转借他人,亦不得随意复制、抄录、拍照或以任何方式传播。否则,引起有碍作者著作权之问题,将可能承担法律责任。 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明,本声明的法律结果由本人承担。 论文作者签名:日期:年月日
基于C/S模式下云打印系统的设计与实现 F u (安康学院电子信息工程系,陕西安康,725000)摘要随着“云”概念地引入,在对“云”概念理解基础上,为了解决传统联机打印(网络共享打印)的不足之处,同时高效率地解决繁琐的打印任务,云打印地实现有着重要的意义。论文中研究基于C/S模式下系统的设计与实现,在数据收发基础上了增加了客户端对数据地加密和服务器端对接收的文件,文件名称和大小创建内存映射表并排序输出给打印机的功能,以VC++6.0为开发工具,采用Windows的核心编程技术内存管理和多线程操作对数据进行高效处理,在WindowsXp平台完成云打印的功能。 为了确保数据安全完整和服务器高效地处理大量的数据,着重研究了网络通讯的数据安全和内存管理、内存映射技术。在检测客户端和云端服务器数据是否有变更时,采用MD5技术生成服务器中存放文件的MD5摘要和最新的客户端测到得MD5摘要对比,确保数据完整。在服务器接收大量数据的时候,对文件名和大小创建内存映射表,然后通过对内存地址地访问,来访问数据,实现了高效
厨卫间JS丙烯酸防水涂料施工方案 1.工程概况(根据具体情况来描述): 2.厕浴、厨房间、公共卫生间在防水工程中的特点: ⑴面积小,阴阳角多,施工难度大; ⑵穿墙、地面管道多; ⑶用水量大,用水频繁集中; ⑷工种复杂,交叉施工,互相干扰; ⑸主要渗漏部位在地面、墙面、穿墙地面管根、缝、立墙与地面相交部位、墙面相交部位、卫生洁具与地面相交部位、管道渗漏及顶板渗漏。 3.防渗漏作法 地面标高低于同层楼层地板20mm,找平层抹平压光,排水坡度为2%,地漏处坡度为5%。穿墙地面管外设套管。高出地面20mm,管根及缝隙用JS密封材料密封;阴阳角部位用水泥砂浆做成平滑的圆角。 4.材料特点 ⑴JS丙烯酸防水涂料是一种由丙烯酸乳液、乙烯-乙酸乙烯共聚乳液和各种掺加剂组成的有机液料和由高铝高镁水泥、石英粉及各种添加料组成的无机粉料复合而成的双组分新型环保防水涂料。液料和粉料按一定比例配合做防水层,涂覆在厕浴、厨房间和公共卫生间基层表面,经过化学反应和水分蒸发固化后形成高强高弹具有良好的防水效果的涂膜。 ⑵JS丙烯酸防水涂料技术性能优良,各项技术指标均符合防水工程技术要求,具有良好的耐热耐寒和抗老化性能,与混凝土等多种材料有很好的黏结力,使用寿命高过过20年以上。 4.施工工艺流程
基层及节点处理→JS丙烯酸防水涂料柔性防水层→保护结合层→面层。 5.施工准备与步骤 ⑴工具准备:基层清理工具如,锤子、凿子、钢丝刷、喷水枪、扫帚、抹布等。取料配料工具如,台秤、水桶、秤料桶、配料桶、电动搅拌器、剪刀等。涂料涂布工具如,滚筒刷、刮板、刷子等。 ⑵材料准备:防水材料须具备质量保证书、合格证。进场材料应按规定取样方法取样检验,检验合格方可进场。使用防水材料的包装、贮存、保管应符合规定要求。 ⑶施工现场环境:气温应在零度以上,通风条件良好,基层无明显积水,且照明光线充足。 ⑷施工组织及安全措施: ①由经过统一培训考核并取得防水施工员合格证书的人员组成 的防水专业施工队伍进行施工。全面实行TOC小组管理。施工时由我方总工程师负责管理,确保工程质量。 ②施工前进行安全教育,技术措施交底,进场施工人员必须带安全帽,施工用电源必须配置漏电开关,施工人员施工时必须严格遵守国家或行业的标准规范。 ⑸基层处理及施工步骤: ①找平找坡层:20mm厚1:2.5水泥砂浆抹平、压光,向地漏处找2%排水坡度,地漏处排水坡度为5%。 ②穿墙地面管道外设套管,高出地面20mm,管道或套管周围缝隙及其根部用JS密封材料填实抹平。 ③阴阳角部位用水泥砂浆做成平滑圆弧角。 ④所有管件、地漏、排水口等部位必须就位正确,安装牢固。 ⑤防水施工步骤:处理找坡找平层→密封阴阳角及穿墙地面管道周围缝隙及根部→地面墙面涂覆1.5mm聚合物水泥防水涂料防水层
卫生间js涂抹防水施工方案 太原万科金域国际4# 楼工程 卫生间JS 防水专项施工方案 一、编制依据 1.1 、《聚合物水泥防水涂料》(JC/T894-2001 ) 1.2 、《建筑防水涂料试验方法》(GB/T23445-2009 ) 1.3 、国家现行防水规范、规程、图集 1.4 、太原万科金域国际4#楼工程的施工图纸、做法及技术核 定、变更等技术文件。 二、工程概况及卫生间工程做法: (一)本工程为金域国际住宅小区,位于太原市万柏林区,为原太原市变压器厂区一部分,太原万科金域国际项目一期工程□标段中的4#楼工程。本工程建筑面积为11834.23 〃,地下一层,地上十七层,局部十五层,总建筑高度50.2m ,室内外高差0.3m 。 地下室防水等级为二级,屋面防水等级为二级,耐火等级地上部分二
级,地下部分为一级,抗震设防烈度为8 度,建筑耐久年限为50 年。(二)图纸要求工程作法: 有地暖地面做法: 1 、钢筋砼楼板 2、20mm 聚苯板(密度20kg/m 3)。 3 、0.2 厚真空镀铝聚酯薄膜 4 、最薄处40 厚C20 细石混凝土从门口处向地漏处找坡 1%,下配地热专用钢丝网巾1.8@200,内埋地热管,表面一次找平压光。 5 、2mm 厚JS 防水涂料上泛300 高(含门洞口侧墙),地 漏、立管周边150 范围内及拐角处做JS 防水涂料一道,门口处做至墙外沿200 处。 6、20 厚1:2.5 水泥砂浆保护层无地暖墙面做法: 1 、墙基层(遇混凝土墙体刷素水泥浆掺界面剂一道); 2、1.5 厚1:2.5 水泥砂浆抹平; 3、2mm 厚JS 防水涂料一道浴盆高出楼地面1200 ,淋浴位高出1800 。 三、施工准备 1 、材料本项目采用北京东方雨虹防水技术股份有限公司生产 的“雨虹”牌JSA-101 聚合物水泥防水涂料,涂刷法施工。JS 防水涂料是一种由高分子乳液与无机粉料组成的双组分防水涂